传送门
题目:
大意:
输入一个数n,求
[
1
…
…
n
−
1
]
[1……n-1]
[1……n−1]范围内最长的字串满足字串的乘积对n取模为1
思路:
代码:
#include <bits/stdc++.h>
#include<unordered_map>
using namespace std;
typedef long long ll;
//#define int long long
const int N=1e5+10;
const ll mod=1e9+7;
const int inf=0x3f3f3f3f;
const double pi=acos(-1);
const double eps=1e-10;
int a[N];
int main(){
// ios::sync_with_stdio(false);
int n,num=1;ll ans=1;cin>>n;
for(int i=1;i<n;i++){
if(__gcd(i,n)==1){
a[num++]=i;
ans=(ans*i)%n;
}
}
if(ans!=1)cout<<num-2<<endl;
else cout<<num-1<<endl;
for(int i=1;i<num;i++){
if(ans!=1&&a[i]==ans)continue;
cout<<a[i]<<' ';
}
return 0;
}