#include <iostream>
using namespace std;
int bitcount(int x) {
int c = 0;
while (x) {
c += x & 1;
x>>=1;
}
return c;
}
bool bit(int v, int x, int y) {
return ((v>>(y*5+x))&1)!=0;
}
bool isBingo(int v) {
return (bit(v, 0, 0)&&bit(v, 0, 1)&&bit(v, 0, 2)&&bit(v, 0, 3)&&bit(v, 0, 4))
|| (bit(v, 1, 0)&&bit(v, 1, 1)&&bit(v, 1, 2)&&bit(v, 1, 3)&&bit(v, 1, 4))
|| (bit(v, 2, 0)&&bit(v, 2, 1)&&bit(v, 2, 2)&&bit(v, 2, 3)&&bit(v, 2, 4))
|| (bit(v, 3, 0)&&bit(v, 3, 1)&&bit(v, 3, 2)&&bit(v, 3, 3)&&bit(v, 3, 4))
|| (bit(v, 4, 0)&&bit(v, 4, 1)&&bit(v, 4, 2)&&bit(v, 4, 3)&&bit(v, 4, 4))
|| (bit(v, 0, 0)&&bit(v, 1, 0)&&bit(v, 2, 0)&&bit(v, 3, 0)&&bit(v, 4, 0))
|| (bit(v, 0, 1)&&bit(v, 1, 1)&&bit(v, 2, 1)&&bit(v, 3, 1)&&bit(v, 4, 1))
|| (bit(v, 0, 2)&&bit(v, 1, 2)&&bit(v, 2, 2)&&bit(v, 3, 2)&&bit(v, 4, 2))
|| (bit(v, 0, 3)&&bit(v, 1, 3)&&bit(v, 2, 3)&&bit(v, 3, 3)&&bit(v, 4, 3))
|| (bit(v, 0, 4)&&bit(v, 1, 4)&&bit(v, 2, 4)&&bit(v, 3, 4)&&bit(v, 4, 4))
|| (bit(v, 0, 0)&&bit(v, 1, 1)&&bit(v, 2, 2)&&bit(v, 3, 3)&&bit(v, 4, 4))
|| (bit(v, 0, 4)&&bit(v, 1, 3)&&bit(v, 2, 2)&&bit(v, 3, 1)&&bit(v, 4, 0))
;
}
int main() {
int total[26] = {0};
int bingo[26] = {0};
const int end = 1 << 25;
for (int i = 0; i < end; i++) {
int c = bitcount(i);
total[c]++;
if (isBingo(i)) bingo[c]++;
}
puts(" total bingo rate");
for (int i = 0; i < 26; i++) {
double r = double(bingo[i]) / double(total[i]);
printf("N=%2d: %7d %7d %0.8lf\n", i, total[i], bingo[i], r);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBiaXRjb3VudChpbnQgeCkgewoJaW50IGMgPSAwOwoJd2hpbGUgKHgpIHsKCQljICs9IHggJiAxOwoJCXg+Pj0xOwoJfQoJcmV0dXJuIGM7Cn0KCmJvb2wgYml0KGludCB2LCBpbnQgeCwgaW50IHkpIHsKCXJldHVybiAoKHY+Pih5KjUreCkpJjEpIT0wOwp9Cgpib29sIGlzQmluZ28oaW50IHYpIHsKCXJldHVybiAoYml0KHYsIDAsIDApJiZiaXQodiwgMCwgMSkmJmJpdCh2LCAwLCAyKSYmYml0KHYsIDAsIDMpJiZiaXQodiwgMCwgNCkpCgkJfHwgKGJpdCh2LCAxLCAwKSYmYml0KHYsIDEsIDEpJiZiaXQodiwgMSwgMikmJmJpdCh2LCAxLCAzKSYmYml0KHYsIDEsIDQpKQoJCXx8IChiaXQodiwgMiwgMCkmJmJpdCh2LCAyLCAxKSYmYml0KHYsIDIsIDIpJiZiaXQodiwgMiwgMykmJmJpdCh2LCAyLCA0KSkKCQl8fCAoYml0KHYsIDMsIDApJiZiaXQodiwgMywgMSkmJmJpdCh2LCAzLCAyKSYmYml0KHYsIDMsIDMpJiZiaXQodiwgMywgNCkpCgkJfHwgKGJpdCh2LCA0LCAwKSYmYml0KHYsIDQsIDEpJiZiaXQodiwgNCwgMikmJmJpdCh2LCA0LCAzKSYmYml0KHYsIDQsIDQpKQoJCXx8IChiaXQodiwgMCwgMCkmJmJpdCh2LCAxLCAwKSYmYml0KHYsIDIsIDApJiZiaXQodiwgMywgMCkmJmJpdCh2LCA0LCAwKSkKCQl8fCAoYml0KHYsIDAsIDEpJiZiaXQodiwgMSwgMSkmJmJpdCh2LCAyLCAxKSYmYml0KHYsIDMsIDEpJiZiaXQodiwgNCwgMSkpCgkJfHwgKGJpdCh2LCAwLCAyKSYmYml0KHYsIDEsIDIpJiZiaXQodiwgMiwgMikmJmJpdCh2LCAzLCAyKSYmYml0KHYsIDQsIDIpKQoJCXx8IChiaXQodiwgMCwgMykmJmJpdCh2LCAxLCAzKSYmYml0KHYsIDIsIDMpJiZiaXQodiwgMywgMykmJmJpdCh2LCA0LCAzKSkKCQl8fCAoYml0KHYsIDAsIDQpJiZiaXQodiwgMSwgNCkmJmJpdCh2LCAyLCA0KSYmYml0KHYsIDMsIDQpJiZiaXQodiwgNCwgNCkpCgkJfHwgKGJpdCh2LCAwLCAwKSYmYml0KHYsIDEsIDEpJiZiaXQodiwgMiwgMikmJmJpdCh2LCAzLCAzKSYmYml0KHYsIDQsIDQpKQoJCXx8IChiaXQodiwgMCwgNCkmJmJpdCh2LCAxLCAzKSYmYml0KHYsIDIsIDIpJiZiaXQodiwgMywgMSkmJmJpdCh2LCA0LCAwKSkKCQk7Cn0KCmludCBtYWluKCkgewoJCglpbnQgdG90YWxbMjZdID0gezB9OwoJaW50IGJpbmdvWzI2XSA9IHswfTsKCQoJY29uc3QgaW50IGVuZCA9IDEgPDwgMjU7Cglmb3IgKGludCBpID0gMDsgaSA8IGVuZDsgaSsrKSB7CgkJaW50IGMgPSBiaXRjb3VudChpKTsKCQl0b3RhbFtjXSsrOwoJCWlmIChpc0JpbmdvKGkpKSBiaW5nb1tjXSsrOwoJfQoJCglwdXRzKCIgICAgICB0b3RhbCAgIGJpbmdvICAgcmF0ZSIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7CgkJZG91YmxlIHIgPSBkb3VibGUoYmluZ29baV0pIC8gZG91YmxlKHRvdGFsW2ldKTsKCQlwcmludGYoIk49JTJkOiAlN2QgJTdkICUwLjhsZlxuIiwgaSwgdG90YWxbaV0sIGJpbmdvW2ldLCByKTsKCX0KCQoJcmV0dXJuIDA7Cn0=