poj 2773 欧几里得 一个拓展应用
2013-08-06 11:24
176 查看
题目大意就是给出n和k求出第k个与n互素的数 这里涉及到了 欧几里得的一个重要知识点:如果(a, b)互质的话,那么(b*t+a, b)肯定互质,其中t为正整数!那么这就是以循环周期的了 那么这题就可以利用这个来做了,代码和详解如下: #include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; const int maxn=1000005; int a[maxn]; int gcd(int a,int b)//递归的欧几里得 { return b==0 ? a : gcd(b,a%b); } int main() { int i; int m,k; while(scanf("%d%d",&m,&k)==2) { int j=0; for(int i=1; i<=m; i++) { if(gcd(i,m)==1)//这里求出从1 ~ m之间与m互质的数 { a[j++]=i; } } if(k%j!=0)//这里要分开来考虑 { printf("%d\n",k/j*m+a[k%j-1]);//这里k/j等于t,而且这数组的下标都是从0开始的 } else if(k%j==0) { printf("%d\n",(k/j-1)*m+a[j-1]); } } return 0; }
相关文章推荐
- poj 2773欧几里得的应用
- POJ 2115 C Looooops (拓展的欧几里得) 拓展的欧几里得详解
- POJ 2773 Happy 2006 欧拉函数的应用
- POJ 1061 青蛙的约会(拓展欧几里得)
- POJ 1061 青蛙的约会(拓展欧几里得)
- poj 2773 Happy 2006(欧拉函数应用)
- 青蛙的约会 POJ - 1061 拓展欧几里得
- POJ 1061 青蛙的约会 拓展欧几里得 经典题
- (串的模式匹配4.6.2)POJ 3461 Oulipo(KMP算法的应用——求一个单词在一行文本中的出现次数)
- 青蛙的约会 POJ - 1061 拓展欧几里得
- poj 3522 Slim Span (最小生成树 的 一个性质 kruskal 的 应用 )
- POJ 2773 Happy 2006------欧几里得 or 欧拉函数。
- POJ1061 青蛙的约会 拓展欧几里得
- 青蛙的约会 POJ - 1061 拓展欧几里得
- 拓展欧几里得 POJ-2115
- poj1601(拓展欧几里得)
- poj 青蛙的约会 1061 (拓展欧几里得 模板)
- POJ 2891 Strange Way to Express Integers(拓展欧几里得)
- 青蛙的约会 POJ - 1061 拓展欧几里得
- 数论及应用学习__Part1 拓展欧几里得【3/5】