为什么数字大了就输出负数了?
#include<bits/stdc++.h>
using namespace std;
long long a,b,p,j=0,ans=1,f[10000000],cnt,v;
int main (){
scanf("%lld%lld%lld",&a,&b,&p);
int v=b;
while(v)
{
f[j]=v%2;
v/=2;
j++;
}
int w=j-1;
for(int i=0;i<=w;i++)
{
cnt=pow(2,i);
ans*=pow(a,cnt*f[i]);
ans%=p;
}
printf("%lld^%lld mod %lld=%lld",a,b,p,ans);
return 0;
}