BOJ 2773 第K个与m互质的数
2013-08-20 11:10
169 查看
算法是关键,得出1-m内的互质数,然后类推计算即可。下面有详细说明。
#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; }
相关文章推荐
- BOJ 2773 第K个与m互质的数
- poj 2773 Happy 2006(求第k个与n互质的数)
- poj 2773 容斥原理求第k个与m互质的数
- poj2773求第K个与m互质的数
- POJ 2773 Happy 2006(求第k个与m互素的数)
- poj2773求第K个与m互质的数
- boj_420_求第k个最小数
- (Relax 1.15)POJ 2773 Happy 2006(欧拉函数的应用:求与n互质的第k个数)
- 2773 Happy 2006 输入m和k,让你求从小到大排列,第k个与m互素的正整数
- POJ 2773 Happy 2006(求第k个和m互素的数/欧拉函数)
- HDU 3388 与m,n 互质的第k个整数
- o.boj 1449 第K个
- 【题目8】查找单链表倒数第K个元素
- 【转】求小于等于N的与N互质的数的和
- 2773 Happy 2006 //欧拉函数的应用
- boj 1336 简单的问题 不过自己没想到 别人解释的~~学习~~
- poj 2773
- 13.查找链表中倒数第k个结点
- boj 215(树形DP)
- BOJ1509 海边 dijstra 最短路