poj2773求第K个与m互质的数
2024-08-30 16:10:21
//半年前做的,如今回顾一下,还是有所收货的,数的唯一分解,.简单题。
#include<iostream>
#include<cstring>
using namespace std;
int a[1000001];int p[1000000]; //用a来筛去m的唯一分解后的质因子及其倍数,流下就是与其互质的数。
int main()
{
int m,k;
while(cin>>m>>k)
{
memset(a,0,sizeof(a));
memset(p,0,sizeof(p));
int mm=m;
for(int i=2;i<=mm;i++) //此处mm即可
{
if(mm%i==0)
{
for(int j=i;j<=m;j+=i) //筛去
a[j]=1;
while(mm%i==0)mm/=i; //除掉
}
}
int t=1; //t记录有多少个,
for(int i=1;i<=m;i++)
{
if(a[i]==0)p[t++]=i; //p[i]记录第i个互质数(1--m)
}
t--; //1--m内有t个,那么m--2m,2m--3m....必然也有t个!每层相差m。
if(k%t==0)cout<<p[t]+m*(k/t-1)<<endl;//考虑特殊位子。
else cout<<m*(k/t)+p[k%t]<<endl;
}
return 0;
}
最新文章
- jenkins插件 查看job修改历史
- qsort函数用法
- List<;IPoint>; to IPointCollection to IPolygon
- SQL 编译与重编译
- html5中input新增type值的使用
- 解决 git extensions 每次提交需要输入用户名和密码
- Ambari中添加新服务
- 想要写出高性能sql语句,你得记住这些……
- 第九节:从源码的角度分析MVC中的一些特性及其用法
- (二)校园信息通微信小程序从后台获取首页的数据笔记
- cygwin vim can&#39;t write .viminfo
- 阻塞队列(BlockingQueue)
- ssh隧道的妙用
- 【Java】 剑指offer(21) 调整数组顺序使奇数位于偶数前面
- springBoot 全局异常捕捉
- Modeless对话框如何响应快捷键
- C# WinCE项目 VS2008 单例窗体实现
- oracle 导入数据报600错误
- telnet命令
- Mybatis学习笔记8 - resultMap自定义结果集映射规则