Advertisement
saquib2508

LOJ 1064 Throwing Dice

Jun 14th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. #define ffr(i,a,b) for(i=a;i<b;i++)
  3. #define ffre(i,a,b) for(i=a;i<=b;i++)
  4. #define ll long long int
  5. #define mm(a,b) memset(a,b,sizeof(a))
  6. #define pf printf
  7. #define sf(a) scanf("%d", &a)
  8. #define MOD (100000007)
  9. #define input(a) freopen(a, "r", stdin)
  10.  
  11. using namespace std;
  12.  
  13. ll ARR[1002][100];
  14. int n, k, s;
  15.  
  16. ll call(int taken, int pos)
  17. {
  18.  
  19.     if(taken>=s && pos==n) return 1;
  20.     if(taken<s && pos==n) return 0;
  21.  
  22.  
  23.     if(ARR[taken][pos]!=-1) return ARR[taken][pos];
  24.     ll ans=0;
  25.     int i;
  26.     for(i=1;i<=6;i++)
  27.     {
  28.          ans+=call(taken+i,pos+1);
  29.     }
  30.  
  31.     //pf("taken %d pos %d ans %lld\n", taken, pos, ans);
  32.     return ARR[taken][pos]=ans;
  33. }
  34.  
  35.  
  36. int main()
  37. {
  38.    
  39.     int cc=1, t=0;
  40.     sf(t);
  41.     int i;
  42.     while(t--)
  43.     {
  44.         mm(ARR,-1);
  45.         sf(n); sf(s);
  46.         ll p=call(0,0), q=1;
  47.         ffr(i,0,n) q*=6;
  48.         ll gc=__gcd(p,q);
  49.         p/=gc; q/=gc;
  50.         if(q==1) pf("Case %d: %lld\n", cc++, p);
  51.         else pf("Case %d: %lld/%lld\n", cc++, p, q);
  52.  
  53.     }
  54.     return 0;
  55. }
  56.  
  57. /*
  58. 5
  59. 1 6 3
  60. 2 9 8
  61. 500 6 1000
  62. 2 100 10
  63. 800 800 10000
  64.  
  65. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement