求各位大佬指教,为什么会T
#include<iostream>
#include<cstdio>
#include<cmath>
#define int long long
using namespace std;
int t,p,i;
int ksm(int a,int b,int mod){
int ans=1%mod;
for(;b;b>>=1,a=a*a%mod){
if(b&1){
ans=ans*a%mod;
}
}
return ans;
}
int leianha(int x){
int ans=x;
for( i=2;i*i<=x;++i){
if(x%i==0){
ans=ans*(i-1)/i;
while(x%i==0){
x/=i;
}
}
}
if(x>1){
ans=ans*(x-1)/x;
}
return ans;
}
int f(int p){
if(p<=2){
return 0;
}
int y=leianha(p);
return ksm(2,y+f(y),p);
}
signed main()
{
scanf("%lld",&t);
for( i=1;i<=t;i++){
scanf("%lld",&p);
printf("%lld\n",f(p));
}
return 0;
}