首页 > 代码库 > POJ 1995

POJ 1995

简单的快速幂取模题

但要注意由于a可能很大,相乘会超范围,所以乘前要先模

#include <iostream>#include <cstdio>using namespace std;int quick(int a,int b,int m){	int ans=1;	a%=m;	while(b){		if(b&1){			ans=(ans*a)%m;			b--;		}		a=(a*a)%m;		b/=2;	}	return ans;}int main(){	int t;	scanf("%d",&t);	int m,n; int ans,a,b;	while(t--){		ans=0;		scanf("%d",&m);		scanf("%d",&n);		for(int i=0;i<n;i++){			scanf("%d%d",&a,&b);			ans=(ans+quick(a,b,m))%m;		}		printf("%d\n",ans%m);	}	return 0;}

  

POJ 1995