2019 蓝桥杯省赛 B 组模拟赛(五) 结果填空:取模

题目:
在这里插入图片描述
代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n = 1,ans = 0;
	for(int i = 1;i <= 2019;i++) n = n * 2019 % 100;
	for(int i = 1;i <= 11;i++){
		int x = 1;
		for(int j = 1;j <= n;j++){
			x = x * i % 101;
		}
		ans += x;
	} 
	cout << ans % 101 << endl;
	return 0;
}

这是道数论题,要求求出1^n + 2 ^n + … + 11 ^ n % 101,而n = 2019^2019.如果选择死算那数据肯定比long long还要大的。所以这里要用到费马小定理,费马小定理公式是:a^(p - 1) % p = 1,并且0 < a < p 且一定是素数。这里可以把101看成公式里的p,因为101是素数。2^n % 101就是2^2019 ^2019 % 100 % 101,并且每一项都是如此,那样就会简化很多。计算2019 ^ 2019时,每次都mod100,这样值就能控制在int。

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/88648334
今日推荐