Product 1 Modulo N CodeForces - 1514C

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Product 1 Modulo N CodeForces - 1514C相关的知识,希望对你有一定的参考价值。

Product 1 Modulo N CodeForces - 1514C

题意:

在[1,n-1]中选x个数,使得乘积mod n =1,求x的最大值,并输出所选的数

题解:

我们设S为所选x个数的乘积
S%n == 1说明gcd(S,n)==1,即所选的x个数均与n互质,如果不互质,不可能%n=1
因此只能选与n互质的数
设sum为所有与n互质的数的乘积,并对n取模
如果sum=1,说明这些数都可以选
如果sum!=1,此时sum一定与n互质(因为sum的因子都是与n互质的),那sum这个数也参与了乘积中,如果去掉这个数,%n就等于1了

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e6+5;
vector<int>ans;
map<int,int>mp;
int n;
void solve(){
    cin>>n;
    int s=1;
    for(int i=1;i<=n-1;i++){
        if(__gcd(i,n)!=1){
            mp[i]=1;
        }else{
            s=s*i%n;
        }
    }
    if(s!=1)mp[s]=1;
    for(int i=1;i<=n-1;i++){
        if(!mp[i]){
            ans.push_back(i);
        }
    }
    cout<<ans.size()<<endl;
    for(int i=0;i<ans.size();i++){
    	cout<<ans[i]<<" ";
	}
    cout<<endl;
}
signed main(){
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

以上是关于Product 1 Modulo N CodeForces - 1514C的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #716 (Div. 2) C. Product 1 Modulo N

POJ 1995 Raising Modulo Numbers(快速幂)

B.Modulo Equality

cf1553F. Pairwise Modulo

AGC 027D.Modulo Matrix(构造 黑白染色)

cf 1169 C Increasing by Modulo