题目链接:http://poj.org/problem?id=1284
原根,定义题面有
暴力枚举肯定会TLE
找规律,用欧拉函数,答案为phi(n-1)
附:原根的百度百科
一篇关于原根看起来很厉害的博客 来自ACdreamer的博客,鸣谢博主!
贴代码
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
// freopen("1284.in","r",stdin);
// freopen("1284.out","w",stdout);
int n;
while (scanf("%d",&n)!=EOF){
n--;
int ans=n;
for (int i=2;i*i<=n;i++){
if (n%i==0){
ans=ans/i*(i-1);
while (n%i==0)n/=i;
}
}
if (n>1)ans=ans/n*(n-1);
printf("%d\n",ans);
}
return 0;
}
【写的有漏洞的,欢迎路过大神吐槽】
2017/07/07 21:55:40
Ending.