fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. double ans[10][120][300]={0};
  5. double recursion(int balls, int reqRuns, int wickets);
  6. int readScore(void);
  7. int main()
  8. {
  9. int t;
  10. scanf("%d",&t);
  11. while(t--)
  12. {
  13. memset(ans,-1,sizeof(ans));
  14. float overs;
  15. int myruns,wickets,target;
  16. scanf("%f",&overs);
  17. myruns=readScore();
  18. scanf("%d",&wickets);
  19. //printf("%d %d\n",myruns,wickets );
  20. scanf("%d",&target);
  21. //printf("%d %d %d\n",myruns,wickets,target);
  22. if(myruns>=target)
  23. {
  24. printf("%s\n","100.00");
  25. continue;
  26. }
  27. else if(wickets>=10)
  28. {
  29. printf("%s\n", "0.00");
  30. continue;
  31. }
  32. // printf("overs = %f\n", overs);
  33. int ov = (int) overs;
  34. int ball = (int)(overs*10)%10;
  35. int totballs = 6*ov+ball;
  36. // printf("%d %d\n",ov,ball );
  37. // printf("%d %d %d\n",totballs, target- myruns,wickets );
  38. float finalAns = recursion(totballs,target-myruns, wickets)*100;
  39. // float temp = finalAns * 100;
  40. // printf("temp = 0%f\n",temp );
  41. // int fa = (int)(temp);
  42. // printf("fa = %d\n", fa);
  43. // finalAns = fa/100;
  44. char temp[1000]={0};
  45. sprintf(temp,"%0.3f",finalAns);
  46. temp[999]='\0';
  47. int k=0;
  48. while(temp[k]!='\0')
  49. {
  50. if(temp[k]=='.')
  51. break;
  52. putchar(temp[k++]);
  53. }
  54. putchar(temp[k++]);
  55. putchar(temp[k++]);
  56. putchar(temp[k++]);
  57. printf("\n");
  58. //printf("%.2f\n",finalAns);
  59.  
  60. }
  61. return 0;
  62. }
  63. int readScore()
  64. {
  65. char ch;
  66. int ans2=0;
  67. ch = getchar();
  68. //ch = getchar();
  69. //ans = ans*10 + ch-'0';
  70. //printf("sadasdas %d\n",ch );
  71. while(ch!='/')
  72. {
  73. ch=getchar();
  74. //printf(" ch = %d\n", ch-'0');
  75. if(ch!='/')
  76. ans2 = ans2*10 + ch-'0';
  77.  
  78. }
  79. //printf("%d\n",ans );
  80. return ans2;
  81. }
  82. double recursion(int balls, int reqRuns, int wickets)
  83. {
  84. if (reqRuns<=0)
  85. return 1;
  86. if (balls==120||wickets==10)
  87. return 0;
  88. if((int)ans[wickets][balls][reqRuns]>=0)
  89. return ans[wickets][balls][reqRuns];
  90.  
  91. ans[wickets][balls][reqRuns] = (recursion(balls+1, reqRuns,wickets)/10+recursion(balls+1, reqRuns-1,wickets)/10+
  92. recursion(balls+1, reqRuns-2,wickets)/10+recursion(balls+1, reqRuns-3,wickets)/10+
  93. recursion(balls+1, reqRuns-4,wickets)/10+recursion(balls+1, reqRuns-5,wickets)/10+
  94. recursion(balls+1, reqRuns-6,wickets)/10+recursion(balls+1, reqRuns,wickets+1)/10+
  95. 2*recursion(balls, reqRuns-1,wickets)/10);
  96. return ans[wickets][balls][reqRuns];
  97.  
  98. }
  99.  
Time limit exceeded #stdin #stdout 5s 4488KB
stdin
Standard input is empty
stdout
Standard output is empty