Advertisement
farsid

Untitled

Mar 9th, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #define filer() freopen("in.txt","r",stdin)
  2. #define filew() freopen("out.txt","w",stdout)
  3. #include<iostream>
  4. #include<stdio.h>
  5. #include<string.h>
  6. #include<math.h>
  7. #include<algorithm>
  8. #include<queue>
  9. #include<stack>
  10. #include<string>
  11. #include<vector>
  12. #include <map>
  13. #define INF 1<<29
  14. #define PI pair<int,int>
  15. #define f first
  16. #define s second
  17. #define SET(a, x) memset((a), (x), sizeof(a))
  18. #define pb push_back
  19. #define i64 long long
  20. #define EPS (1e-9)
  21. using namespace std;
  22. typedef vector<int> VI;
  23. typedef vector<PI> vii;
  24. //i64 INF=(i64)((i64)1<<(i64)59);
  25.  
  26. i64 N,p;
  27.  
  28. i64 BigMod(i64 a,i64 p,i64 m)
  29. {
  30. if(!p)return 1;
  31. if(p%2)return ((a%m)*BigMod(a,p-1,m)%m)%m;
  32. i64 ta=BigMod(a,p/2,m);
  33. return ((ta%m)*(ta%m))%m;
  34. }
  35.  
  36.  
  37.  
  38. int main()
  39. {
  40. //filer();
  41. int T,cas=0;
  42. int i,j;
  43. scanf("%d",&T);
  44. while(T--)
  45. {
  46. scanf("%lld%lld",&N,&p);
  47.  
  48. i64 m=N/p;
  49. i64 ans=BigMod(p-1,m,p);
  50. m=N%p;
  51. for(i=1;i<=m;i++)
  52. {
  53. ans*=i;
  54. ans%=p;
  55. }
  56. printf("%lld\n",ans);
  57. /*ans=1;
  58. for(i=1;i<=N;i++)
  59. {
  60. if(i%p==0)continue;
  61. ans*=(i%p);
  62. ans%=p;
  63. }
  64. cout<<ans<<endl;*/
  65. }
  66. return 0;
  67. }
  68. /*
  69. Test Case:
  70.  
  71. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement