my code(费马小定理/欧几里得定理)
#include <cstdio>
using namespace std;
const int mod=1e9+7;
int qp(int a,int b,int p)
{
int res=1;
for(;b;b>>=1,a=1ll*a*a%p)
if(b&1) res=1ll*res*a%p;
return res;
}
int f(int x,int p) {return x>p? x%p+p:x;}
int a,b,c;
int main()
{
while(~scanf("%d%d%d",&a,&b,&c))
{
if(a==-1&&b==-1&&c==-1) break;
printf("%d\n",qp(a,qp(b,c,mod-1),mod));
}
return 0;
}
hack
0 1000000006 1
output
1
就没了
你可以认为gcd(0,n)=n
使得0p−1≡00(modp)不成立
或仅仅理解为00为特殊情况(无意义,不符合)