求助
查看原帖
求助
536119
huaziqi楼主2021/9/7 17:24

为什么数字大了就输出负数了?

#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;
}
2021/9/7 17:24
加载中...