Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///solutie Iacob Tudor
- #include<bits/stdc++.h>
- using namespace std;
- ifstream fin("window.in");
- ofstream fout("window.out");
- const int mod=1e9+7;
- int power(int a,int b,int m){
- if(!b)return 1;
- long long p(power(a,b/2,m));
- if(b&1)return (((a*p)%m)*p)%m;
- return (p*p)%m;
- }
- int f[1000005],spf[1000005];
- void solve(){
- for(int i=0;i<1000005;i++)f[i]=0;
- int a,b,c;
- long long nr(1);
- cin>>a>>b>>c;
- for(int i=max(c,b-c)+1;i<=b;i++){
- int x(i);
- while(x>1){
- f[spf[x]]++;
- x/=spf[x];
- }
- }
- for(int i=2;i<=min(c,b-c);i++){
- int x(i);
- while(x>1){
- f[spf[x]]--;
- x/=spf[x];
- }
- }
- for(int i=2;i<1000005;i++){
- if(!f[i])continue;
- nr*=power(i,f[i],mod-1);
- nr%=mod-1;
- }
- cout<<power(a,nr,mod)<<"\n";;
- }
- int main(){
- for(int i=2;i<1000005;i++)spf[i]=i;
- for(int i=2;i*i<1000005;i++){
- if(spf[i]!=i)continue;
- for(int j=i*i;j<1000005;j+=i)spf[j]=min(spf[j],i);
- }
- int t;
- //t=1;
- cin>>t;
- while(t--)solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement