题解
- 看懂题目就很容易了,然后数据1000,显然直接暴力做就好了
代码
1 #include <cstdio>
2 #include <iostream>
3 using namespace std;
4 int n,cnt,x,o,k,a[10010];
5 int gcd(int a, int b) { return a==0?b:gcd(b%a,a); }
6 int main()
7 {
8 freopen("math.in","r",stdin),freopen("math.out","w",stdout);
9 scanf("%d",&n);
10 if (n==1) { printf("1"); return 0; }
11 for (int i=1;i<=n;i++) if (gcd(n,i)==1) cnt++,a[cnt]=i;
12 for (int i=1;i<=cnt;i++)
13 {
14 x=o=1;
15 for (int j=1;j<=cnt-1;j++)
16 {
17 (x*=a[i])%=n;
18 if (x==1) { o=0; break; }
19 }
20 if (x*a[i]%n==1&&o) { printf("%d\n",a[i]); k=1; }
21 }
22 if (!k) printf("-1");
23 }