[模拟]JZOJ 3520 原根
分析
按照题意模拟即可
#include <iostream> #include <cstdio> using namespace std; int m,phi; bool has; int GCD(int a,int b) { return !b?a:GCD(b,a%b); } int main() { freopen("math.in","r",stdin); freopen("math.out","w",stdout); scanf("%d",&m); for (int i=1;i<=m;i++) phi+=GCD(i,m)==1; for (int i=1;i<=m;i++) if (GCD(i,m==1)) { int pow=1; for (int j=1;j<=phi;j++) { pow=pow*i%m; if (pow==1) { if (j==phi) { printf("%d\n",i); has=1; } break; } } } if (m==1) { printf("1"); return 0; } if (!has) printf("-1"); }
在日渐沉没的世界里,我发现了你。