fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int bitcount(int x) {
  6. int c = 0;
  7. while (x) {
  8. c += x & 1;
  9. x>>=1;
  10. }
  11. return c;
  12. }
  13.  
  14. bool bit(int v, int x, int y) {
  15. return ((v>>(y*5+x))&1)!=0;
  16. }
  17.  
  18. bool isBingo(int v) {
  19. return (bit(v, 0, 0)&&bit(v, 0, 1)&&bit(v, 0, 2)&&bit(v, 0, 3)&&bit(v, 0, 4))
  20. || (bit(v, 1, 0)&&bit(v, 1, 1)&&bit(v, 1, 2)&&bit(v, 1, 3)&&bit(v, 1, 4))
  21. || (bit(v, 2, 0)&&bit(v, 2, 1)&&bit(v, 2, 2)&&bit(v, 2, 3)&&bit(v, 2, 4))
  22. || (bit(v, 3, 0)&&bit(v, 3, 1)&&bit(v, 3, 2)&&bit(v, 3, 3)&&bit(v, 3, 4))
  23. || (bit(v, 4, 0)&&bit(v, 4, 1)&&bit(v, 4, 2)&&bit(v, 4, 3)&&bit(v, 4, 4))
  24. || (bit(v, 0, 0)&&bit(v, 1, 0)&&bit(v, 2, 0)&&bit(v, 3, 0)&&bit(v, 4, 0))
  25. || (bit(v, 0, 1)&&bit(v, 1, 1)&&bit(v, 2, 1)&&bit(v, 3, 1)&&bit(v, 4, 1))
  26. || (bit(v, 0, 2)&&bit(v, 1, 2)&&bit(v, 2, 2)&&bit(v, 3, 2)&&bit(v, 4, 2))
  27. || (bit(v, 0, 3)&&bit(v, 1, 3)&&bit(v, 2, 3)&&bit(v, 3, 3)&&bit(v, 4, 3))
  28. || (bit(v, 0, 4)&&bit(v, 1, 4)&&bit(v, 2, 4)&&bit(v, 3, 4)&&bit(v, 4, 4))
  29. || (bit(v, 0, 0)&&bit(v, 1, 1)&&bit(v, 2, 2)&&bit(v, 3, 3)&&bit(v, 4, 4))
  30. || (bit(v, 0, 4)&&bit(v, 1, 3)&&bit(v, 2, 2)&&bit(v, 3, 1)&&bit(v, 4, 0))
  31. ;
  32. }
  33.  
  34. int main() {
  35.  
  36. int total[26] = {0};
  37. int bingo[26] = {0};
  38.  
  39. const int end = 1 << 25;
  40. for (int i = 0; i < end; i++) {
  41. int c = bitcount(i);
  42. total[c]++;
  43. if (isBingo(i)) bingo[c]++;
  44. }
  45.  
  46. puts(" total bingo rate");
  47. for (int i = 0; i < 26; i++) {
  48. double r = double(bingo[i]) / double(total[i]);
  49. printf("N=%2d: %7d %7d %0.8lf\n", i, total[i], bingo[i], r);
  50. }
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 1.06s 15240KB
stdin
Standard input is empty
stdout
      total   bingo   rate
N= 0:       1       0 0.00000000
N= 1:      25       0 0.00000000
N= 2:     300       0 0.00000000
N= 3:    2300       0 0.00000000
N= 4:   12650       0 0.00000000
N= 5:   53130      12 0.00022586
N= 6:  177100     240 0.00135517
N= 7:  480700    2280 0.00474308
N= 8: 1081575   13680 0.01264822
N= 9: 2042975   58094 0.02843598
N=10: 3268760  185292 0.05668572
N=11: 4457400  459300 0.10304213
N=12: 5200300  902428 0.17353383
N=13: 5200300 1419596 0.27298348
N=14: 4457400 1792852 0.40221923
N=15: 3268760 1812188 0.55439616
N=16: 2042975 1455040 0.71221625
N=17: 1081575  919213 0.84988373
N=18:  480700  453612 0.94364885
N=19:  177100  174924 0.98771316
N=20:   53130   53082 0.99909656
N=21:   12650   12650 1.00000000
N=22:    2300    2300 1.00000000
N=23:     300     300 1.00000000
N=24:      25      25 1.00000000
N=25:       1       1 1.00000000