Codeforces 1514 C
1514 C
题意
给出一个数n,求[1,2,3...n-1]的某个最长子序列,这个子序列的元素乘积模n余1。
思路
这是个思维题,一个数学公式
所以子序列中的元素与互质,累乘结果模后如果不是1,那么将序列中等于结果的元素去掉
代码
void solve()
{
cin>>n;
vector<int> a;
for(int i=1;i<=n;i++) if(__gcd(i,n)==1) a.push_back(i);
int ans=1;
for(auto x:a) ans=ans*x%n;
ans=ans%n;
if(ans==1)
{
cout<<a.size()<<endl;
for(auto x:a) cout<<x<<" ";
cout<<endl;
}
else
{
cout<<a.size()-1<<endl;
for(auto x:a) if(ans!=x) cout<<x<<" ";
cout<<endl;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)