fork download
  1. /*
  2. jai shree ram _/\_
  3. A hacker from NITP
  4. */
  5.  
  6. #include<bits/stdc++.h>
  7. using namespace std;
  8.  
  9. #define mod 1000000007
  10. typedef set<string> ss;
  11. typedef vector<int> vs;
  12. typedef map<int,char> msi;
  13. typedef pair<int,int> pa;
  14. typedef long long int ll;
  15.  
  16. vector<ll> v;
  17. map<ll,int> m;
  18. ll k;
  19. void dfs(ll s)
  20. {
  21. if(m[s]>0)
  22. return;
  23. v.push_back(s);
  24. m[s]=v.size();
  25. dfs(s&k);
  26. dfs(s|k);
  27. dfs(s^k);
  28. }
  29.  
  30. ll n,x,s,i,j;
  31. long double a,b,c,ans,f[2][1000004];
  32. int main()
  33. {
  34. //freopen("C-large-practicea.in", "r", stdin);
  35. //freopen("C-large-practiceao.out", "w", stdout);
  36. ios_base::sync_with_stdio(false);
  37. cin.tie(0);
  38. memset(f,0,sizeof(f));
  39. int t,p=1;
  40. cin>>t;
  41. while(t--)
  42. {
  43. cout<<"Case #"<<p++<<": ";
  44. cin>>n>>x>>k>>a>>b>>c;
  45. a/=100; b/=100; c/=100;
  46. m.clear();
  47. v.clear();
  48. dfs(x);
  49. s=v.size();
  50. f[1][(m[x&k]-1)]+=a; f[1][(m[x|k]-1)]+=b; f[1][(m[x^k]-1)]+=c;
  51. for(i=1;i<n;i++)
  52. {
  53. for(j=0;j<s;j++)
  54. f[(i+1)&1][j]=0;
  55. for(j=0;j<s;j++)
  56. {
  57. f[(i+1)&1][(m[v[j]&k]-1)]+=f[i&1][j]*a;
  58. f[(i+1)&1][(m[v[j]|k]-1)]+=f[i&1][j]*b;
  59. f[(i+1)&1][(m[v[j]^k]-1)]+=f[i&1][j]*c;
  60. }
  61. }
  62. ans=0;
  63. for(j=0;j<s;j++)
  64. ans+=(long double)f[n&1][j]*v[j];
  65. cout<<fixed<<setprecision(12)<<ans<<"\n";
  66. for(i=0;i<2;i++)
  67. for(j=0;j<s;j++)
  68. f[i][j]=0;
  69. }
  70. return 0;
  71. }
  72.  
Success #stdin #stdout 0.02s 26856KB
stdin
4
6 4229 4808 66 21 13
7 1230 6598 35 29 36
8 5978 3308 71 29 0
9 7081 5231 78 9 13
8 7552 3703 52 18 30
5 2822 2887 32 66 2
10 8191 0 10 30 60
1 9216 8704 1 98 1
10 0 8191 10 80 10
9 9888 5834 55 16 29
5 8191 0 10 30 60
5 8525 2059 1 78 21
7 4188 6772 65 23 12
1 8191 0 10 30 60
9 5973 7383 53 1 46
5 6973 7672 19 27 54
10 9216 8704 33 33 34
5 9216 8704 1 1 98
5 5945 2829 46 39 15
8 7608 3150 66 28 6
10 9216 8704 98 1 1
5 0 8191 10 80 10
8 6738 4672 77 8 15
10 9216 8704 1 98 1
8 4951 5554 89 2 9
9 4646 1476 41 8 51
3 7840 4046 22 33 45
9 2710 7061 100 0 0
6 4769 9477 28 0 72
4 9310 9540 22 33 45
5 9356 2372 45 47 8
5 5871 8306 59 14 27
1 1667 696 22 33 45
9 5117 1495 29 39 32
7 8082 5967 27 27 46
5 9216 8704 98 1 1
1 0 8191 10 80 10
1 9216 8704 98 1 1
9 6783 6427 58 12 30
9 3704 1603 68 22 10
1 9216 8704 1 1 98
9 2474 6792 40 28 32
2 991 5210 22 33 45
5 9216 8704 1 98 1
7 6222 7971 78 5 17
9 5590 2749 32 18 50
10 9216 8704 1 1 98
8 3364 2148 78 3 19
5 4633 7402 33 66 1
9 8078 5492 51 16 33
stdout
Case #1: 3494.667167505872
Case #2: 4296.828615593667
Case #3: 3165.403539187245
Case #4: 3305.643927519213