- #include <stdio.h> 
-   
- static unsigned int x = 123456789; 
- static unsigned int y = 362436069; 
- static unsigned int z = 521288629; 
- static unsigned int w = 88675123; 
-   
- unsigned int randint(void) { 
- 	unsigned int t; 
- 	t = (x ^ (x << 11)); 
- 	x = y; y = z; z = w; 
- 	w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); 
- 	return w; 
- } 
-   
- int main(void) { 
- 	unsigned int max = 0x56000000u; 
- 	unsigned int blocksize = max / 16; 
- 	int count[16] = {0}; 
- 	int i; 
- 	for (i = 0; i < 160000; i++) { 
- #if 0 
- 		unsigned int value = randint() % max; 
- #else 
- 		unsigned int value; 
- 		int ok = 0; 
- 		unsigned int r = (0xffffffffu % max + 1) % max; 
- 		do { 
- 			unsigned int x = randint(); 
- 			if (r == 0 || x < 0xffffffff - (r - 1)) { ok = 1; value = x % max; } 
- 		} while (!ok); 
- #endif 
- 		count[value / blocksize]++; 
- 	} 
- 	for (i = 0; i < 16; i++) { 
- 		printf("%2d %8d\n",-  i ,-  count [- i ]);
 
- 	} 
- 	return 0; 
- } 
-   
				I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdGF0aWMgdW5zaWduZWQgaW50IHggPSAxMjM0NTY3ODk7CnN0YXRpYyB1bnNpZ25lZCBpbnQgeSA9IDM2MjQzNjA2OTsKc3RhdGljIHVuc2lnbmVkIGludCB6ID0gNTIxMjg4NjI5OwpzdGF0aWMgdW5zaWduZWQgaW50IHcgPSA4ODY3NTEyMzsKCnVuc2lnbmVkIGludCByYW5kaW50KHZvaWQpIHsKCXVuc2lnbmVkIGludCB0OwoJdCA9ICh4IF4gKHggPDwgMTEpKTsKCXggPSB5OyB5ID0gejsgeiA9IHc7Cgl3ID0gKHcgXiAodyA+PiAxOSkpIF4gKHQgXiAodCA+PiA4KSk7CglyZXR1cm4gdzsKfQoKaW50IG1haW4odm9pZCkgewoJdW5zaWduZWQgaW50IG1heCA9IDB4NTYwMDAwMDB1OwoJdW5zaWduZWQgaW50IGJsb2Nrc2l6ZSA9IG1heCAvIDE2OwoJaW50IGNvdW50WzE2XSA9IHswfTsKCWludCBpOwoJZm9yIChpID0gMDsgaSA8IDE2MDAwMDsgaSsrKSB7CiNpZiAwCgkJdW5zaWduZWQgaW50IHZhbHVlID0gcmFuZGludCgpICUgbWF4OwojZWxzZQoJCXVuc2lnbmVkIGludCB2YWx1ZTsKCQlpbnQgb2sgPSAwOwoJCXVuc2lnbmVkIGludCByID0gKDB4ZmZmZmZmZmZ1ICUgbWF4ICsgMSkgJSBtYXg7CgkJZG8gewoJCQl1bnNpZ25lZCBpbnQgeCA9IHJhbmRpbnQoKTsKCQkJaWYgKHIgPT0gMCB8fCB4IDwgMHhmZmZmZmZmZiAtIChyIC0gMSkpIHsgb2sgPSAxOyB2YWx1ZSA9IHggJSBtYXg7IH0KCQl9IHdoaWxlICghb2spOwojZW5kaWYKCQljb3VudFt2YWx1ZSAvIGJsb2Nrc2l6ZV0rKzsKCX0KCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CgkJcHJpbnRmKCIlMmQgJThkXG4iLCBpLCBjb3VudFtpXSk7Cgl9CglyZXR1cm4gMDsKfQo=