P11961原根判断(1)
前几篇讲了GESP 6级的一些知识点对应的题目,今天越级讲讲五级的题,这题上次考五级的都知道,是出了名的难题,在洛谷上达到了蓝题的水平,大约是S组二等奖水平。
截止 2025 年 3 月,本题可能超出了 GESP 考纲范围。在该时间点下,原根是 NOI 大纲 8 级知识点(NOI 级),而相对简单的无需原根知识的做法中,使用的费马小定理与欧拉定理也属于 NOI 大纲 7 级知识点(提高级),且均未写明于 GESP 大纲中。需要注意,GESP 大纲和 NOI 大纲是不同的大纲。
所以,总结一下:GESP 超纲了!!!
如果你愿意深入了解,你可以学习并完成这里的题目,但我暂时不会讲。
所以看看题目给出的:
- 1<g<p;
- g^(p−1) mod p=1;
- 对于任意 1≤i<p−1 均有 g^i mod p!=1。
第一个条件,有手就行,不会出这么简单的题。但题目里给出了明确的规定。
第二个条件,写个快速幂,进行判断即可。
代码如下:
int quickpow(int m,int n){int ans=1;while(n){if(n&1)ans=(m%g*ans%g); m=(m%g*m%g)%g;n>>=1;}return ans%g;
}
if (quickpow(p,g-1)%g!=1){cout<<"No"<<endl;continue;}
第三个条件,你们先思考一下,到时候用投票解决。