Thursday, 27 July 2017

Lightoj 1067 - Combinations


  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4. #define M 1000003
  5. ll fact[M];
  6. ll bigmod(ll p, ll q){
  7.     if(== 1) return p%M;
  8.     if(q%2 == 0){
  9.         ll a = bigmod(p, q/2);
  10.         return ((a%M)*(a%M))%M;
  11.     }
  12.     else{
  13.         ll a = bigmod(p, q-1);
  14.         return (a*p)%M;
  15.     }
  16. }
  17. void pre(){
  18.     fact[0] = 1;
  19.     for(int i = 1; i <M; i++){
  20.         fact[i] = (i*(fact[i-1]%M))%M;
  21.         //if(fact[i]<=0)printf(" fact[%d] =  %lld \n", i, fact[i]);
  22.     }
  23. }
  24. int main(){
  25.     pre();
  26.     int ts;
  27.     cin>>ts;
  28.     for(int k = 1; k <= ts; k++){
  29.         int n, r;
  30.         scanf("%d%d"&n, &r);
  31.         if(n<r){
  32.             printf("Case %d: 0\n", k);
  33.             continue;
  34.         }
  35.         else if(== r || r == 0){
  36.             printf("Case %d: 1\n", k);
  37.             continue;
  38.         }
  39.         ll s = bigmod((fact[n-r]*fact[r])%M,M-2)%M;
  40.         ll p = (fact[n]*s)%M;
  41.         printf("Case %d: %lld\n", k,p);
  42.     }
  43.     return 0;
  44. }

No comments:

Post a Comment

Most Featured Post

Lightoj 1159 - Batman

http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...