fork download
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4. long long int t, n, k, p, a, b, c, d, e;
  5. long long N, K;
  6. cin>>t;
  7. while(t--){
  8. cin>>N>>K>>p;
  9. N++; K++;
  10. a=1;
  11. while(K){
  12. k = K%p; K = K/p;
  13. n = N%p; N = N/p;
  14. b=1; c=1;
  15. if(n-k<0){
  16. a=0; break;
  17. }
  18. if(n-k<k) k = n-k;
  19. while(k){
  20. b = (b*(n+1-k))%p;
  21. c = (c*k)%p;
  22. k -= 1;
  23. }
  24. d = 1; e = p-2;
  25. while(e){
  26. if(e%2) d = (d*c)%p;
  27. c = (c*c)%p;
  28. e /= 2;
  29. }
  30. b = (b*d)%p;
  31. a = (a*b)%p;
  32. }
  33. cout<<a<<endl;
  34. }
  35. return 0;
  36. }
Success #stdin #stdout 0s 2688KB
stdin
8
200000000000 10000000000 2
2000000000 12 50000
500000000000 30000 130000
5 2 3
6 5 11
7 6 3
6 5 7
6 5 5
stdout
0
0
0
2
7
2
0
2