扩展欧拉定理 求查错
查看原帖
扩展欧拉定理 求查错
90972
shitbro楼主2020/12/29 15:14
#include <cstdio>
#define int long long
using namespace std;

int qpow(int a,int b,int mod) {
	int res = 1;
	while(b) {
		if(b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}
signed main () {
	int a,m,b = 0; scanf("%lld%lld",&a,&m);
	int res = 1;
	for(int i = 2;i <= m;i ++) {
		if(m % i != 0) {
			res ++;
		}
	}
	int flag = 0;
	char c = getchar();
	while(c < '0' || c > '9') c = getchar();
	while(c >= '0' && c <= '9') {
		if(b * 10 + c - '0' >= res) {
			flag = 1;
		}
		b = (b * 10 + c - '0') % res;
		c = getchar();
	}
	if(! flag) printf("%lld\n",qpow(a,b,m));
	else {
		b += res;
		printf("%lld\n",qpow(a,b % res + res,m));
	}
	return 0;
}
2020/12/29 15:14
加载中...