刚刚通过了
虽然我也并不知道我到底干了啥就过了
好像是把`long long bala=1`改成了`long long bala=1ll`.
```c++
#include<cmath>
#include<cstdio>
#include<iostream>
#define mod 999911659
#define Mod 999911658
using namespace std;
int s[5]={2,3,4679,35617};
int n,g;
void exgcd(int a,int b,int &x,int &y){
if(!b){x=1,y=0;return;}
exgcd(b,a%b,y,x);
y-=a/b*x;
}
int Inv(int a,int p){
int x,y,c;
exgcd(a,p,x,y);
x=(x%p+p)%p;
if(!x)x+=p;
return x;
}
int C(int n,int m,int mo){
if(m>n)return 0;
long long up=1ll,down=1ll;
for(int i=n-m+1;i<=n;++i)up=up*i%mo;
for(int i=1;i<=m;++i)down=down*i%mo;
return up*Inv(down,mo)%mo;
}
int Lucas(int n,int m,int mo){
if(m>n)return 0;
long long ans=1ll,nn=n,mm=m;
for(;m;n/=mo,m/=mo)
ans=ans*C(n%mo,m%mo,mo)%mo;
return ans;
}
int China(int n, int a[], int m[]) {
int ans=0,w,x;
for(int i=0;i < n; i++) {
w=Mod/m[i];
x=Inv(w,m[i]);
ans=(ans+(long long)x*w*a[i])%Mod;
}
return (ans+Mod)%Mod;
}
int Calc(int m){
int b[5]={0};long long ans=0;
for(int i=0;i<4;++i){
b[i]=Lucas(n,m,s[i]);
}
ans=China(4,b,s);
return ans;
}
int Pow(int a,int b){
long long ans=1ll,bas=a;
while(b){
if(b&1)ans=(ans*bas)%mod;
bas=(bas*bas)%mod;
b>>=1;
}
return ans;
}
main(){
int ans=0;
scanf("%d%d",&n,&g);
if(g==mod){
printf("0");
return 0;
}
for(int i=1;i<sqrt(n);++i)
if(n%i==0)
ans=((ans+Calc(i))%Mod+Calc(n/i))%Mod;
int Answer=Pow(g,ans);
printf("%d",Answer);
return 0;
}
```
by aiyougege @ 2018-06-13 21:29:34