Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. //#define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <string>
  6. #include <set>
  7. #include <map>
  8. #include <queue>
  9. #include <bitset>
  10. #include <intrin.h>
  11. #include <nmmintrin.h>
  12. #include <stdio.h>
  13. #include <chrono>
  14. #include <stack>
  15. #include <ctime>
  16. #include <iomanip>
  17. #include <cmath>
  18. #include <unordered_map>
  19. #include <functional>
  20. #define f(n) for(ll i=0;i<n;i++)
  21. #define mp make_pair
  22. #define pii pair<int,int>
  23. #define all(x) x.begin(),x.end()
  24. #define rall(x) x.rbegin(),x.rend()
  25. using namespace std;
  26. typedef long long ll;
  27. #define INF 2e9
  28. #define LINF 2e18
  29. #define MOD 1000000007
  30. #define MOD9 998244353
  31. #define eps 0.000001
  32. #define pi 3.1415926535
  33. #define yes "YES"
  34. #define no "NO"
  35.  
  36. void maksakovsky() {
  37. cin.sync_with_stdio(false); cout.tie(0); cin.tie(nullptr);
  38. cout.precision(14); cout << fixed;
  39. }
  40. int k;
  41.  
  42. ll check_pob(ll mask) {
  43. ll res = 0;
  44. int a[4][7];
  45. for (int i = 0; i < 4; i++) {
  46. for (int j = 0; j < 7; j++) {
  47. a[i][j] = ((mask & 1) == 1);
  48. mask >>= 1;
  49. }
  50. }
  51. int count = 0;
  52. while (count < k) {
  53. for (int i = 0; i < 4; i++) {
  54. for (int j = 0; j < 7; j++) {
  55. if (a[i][j] == 0)continue;
  56. int cnt = 0;
  57. for (int p = 0; p < 7; p++) {
  58. if (a[i][p] == 1)cnt++;
  59. }
  60. if (cnt <= 2) {
  61. for (int p = 0; p < 7; p++) {
  62. if (a[i][p] == 1)a[i][p] = 0;
  63. }
  64. }
  65. cnt = 0;
  66. for (int p = 0; p < 4; p++) {
  67. if (a[p][j] == 1)cnt++;
  68. }
  69. if (cnt <= 1) {
  70. for (int p = 0; p < 4; p++) {
  71. if (a[p][j] == 1)a[p][j] = 0;
  72. }
  73. }
  74.  
  75. }
  76. }
  77. count++;
  78. }
  79. for (int i = 0; i < 3; i++) {
  80. for (int j = 0; j < 5; j++) {
  81. if (a[i][j] == 1)res++;
  82. }
  83. }
  84. return res;
  85. }
  86.  
  87. int main() {
  88. maksakovsky();
  89. ll n = 1 << 28;
  90. map<int, double>mMat;
  91. map<int, double>mVer;
  92.  
  93. mVer[24] = 1.0;
  94. mMat[24] = 12.83956043956044;
  95.  
  96. mVer[23] = 1.0;
  97. mMat[23] = 12.27838827838828;
  98.  
  99. mVer[22] = 1.0;
  100. mMat[22] = 11.70007166746297;
  101.  
  102. mVer[21] = 1.0;
  103. mMat[21] = 11.09854819093949;
  104.  
  105. mVer[20] = 1.0;
  106. mMat[20] = 10.46547655243307;
  107.  
  108. mVer[19] = 1.0;
  109. mMat[19] = 9.78923250662381;
  110.  
  111. mVer[18] = 1.0;
  112. mMat[18] = 9.05411064907632;
  113.  
  114. mVer[17] = 1.0;
  115. mMat[17] = 8.23983663171306;
  116.  
  117. mVer[16] = 1.0;
  118. mMat[16] = 7.31877401550305;
  119.  
  120. mVer[15] = 1.0;
  121. mMat[15] = 6.24139472722728;
  122.  
  123. mVer[14] = 1.0;
  124. mMat[14] = 4.90650940009871;
  125.  
  126. mVer[13] = 0.74833759590793;
  127. mMat[13] = 3.11006816914409;
  128.  
  129. mVer[12] = 0.45497582240078;
  130. mMat[12] = 1.69522172537383;
  131.  
  132. mVer[11] = 0.24032153963504;
  133. mMat[11] = 0.83445444715468;
  134.  
  135. mVer[10] = 0.11187637686494;
  136. mMat[10] = 0.37179639582386;
  137.  
  138. mVer[9] = 0.04544441066180;
  139. mMat[9] = 0.14753724536333;
  140.  
  141. mVer[9] = 0.01540488497010;
  142. mMat[9] = 0.04958809306635;
  143.  
  144. cin >> k;
  145. if (k >= 9 && k <= 24) {
  146. cout << mVer[k] << " " << mMat[k];
  147. return 0;
  148. }
  149. ll ans = 0, obh = 0;
  150. double ver = 0;
  151. for (ll mask = 32; mask < n; mask++) {
  152. if (__popcnt(mask) == k) {
  153. ll cur = check_pob(mask);
  154. ans += cur;
  155. ver += (cur > 0);
  156. obh++;
  157. }
  158. }
  159. double mat = (double)ans / (double)obh;
  160. ver /= (double)obh;
  161. cout << ver << " " << mat;
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement