为什么快速幂加上 ans = 1%p 后就AC了?
查看原帖
为什么快速幂加上 ans = 1%p 后就AC了?
247202
OnlyExtreme楼主2020/7/30 18:16

以下为代码:

#include <bits/stdc++.h>
using namespace std;

int power(int a, int b, int p)
{
	int ans = 1 % p;
	for( ; b; b>>=1)
	{
		if(b & 1) ans = (long long)ans * a % p;
		a = (long long)a * a % p;
	}
	return ans;
}

int main()
{
	int a, b, p;
	scanf("%d%d%d", &a, &b, &p);
	printf("%d^%d mod %d=%d\n", a, b, p, power(a, b, p));
	return 0;
}

就这个函数里面的 ans 定义的时候加上 1 % p就对了,请问是为什么?

2020/7/30 18:16
加载中...