Advertisement
a53

Clasa0

a53
Oct 6th, 2021
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. ///solutie Iacob Tudor
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. ifstream fin("window.in");
  5. ofstream fout("window.out");
  6. const int mod=1e9+7;
  7. int power(int a,int b,int m){
  8. if(!b)return 1;
  9. long long p(power(a,b/2,m));
  10. if(b&1)return (((a*p)%m)*p)%m;
  11. return (p*p)%m;
  12. }
  13. int f[1000005],spf[1000005];
  14. void solve(){
  15. for(int i=0;i<1000005;i++)f[i]=0;
  16. int a,b,c;
  17. long long nr(1);
  18. cin>>a>>b>>c;
  19. for(int i=max(c,b-c)+1;i<=b;i++){
  20. int x(i);
  21. while(x>1){
  22. f[spf[x]]++;
  23. x/=spf[x];
  24. }
  25. }
  26. for(int i=2;i<=min(c,b-c);i++){
  27. int x(i);
  28. while(x>1){
  29. f[spf[x]]--;
  30. x/=spf[x];
  31. }
  32. }
  33. for(int i=2;i<1000005;i++){
  34. if(!f[i])continue;
  35. nr*=power(i,f[i],mod-1);
  36. nr%=mod-1;
  37. }
  38. cout<<power(a,nr,mod)<<"\n";;
  39. }
  40. int main(){
  41. for(int i=2;i<1000005;i++)spf[i]=i;
  42. for(int i=2;i*i<1000005;i++){
  43. if(spf[i]!=i)continue;
  44. for(int j=i*i;j<1000005;j+=i)spf[j]=min(spf[j],i);
  45. }
  46. int t;
  47. //t=1;
  48. cin>>t;
  49. while(t--)solve();
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement