POJ

来源:互联网 发布:邯郸煤炭软件 编辑:程序博客网 时间:2024/06/05 06:45
题目描述:

点击打开链接

求第k个与n互素的数。就是小用一下互素的性质,如果x与n互素,那么x*t+n肯定与n也互素,所以我们只需算出n以内m个与n互素的数就行了,剩下的数就是m个一循环。

AC代码:

#include<iostream>#include<cstdlib>#include<ctime>#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<stack>#include<queue>#include<algorithm>using namespace std;const int MOD=21252;int a[10000010];int gcd(int x,int y){    return y==0? x:gcd(y,x%y);}int main(){    int m,k;    while(cin>>m>>k)    {        int j=0;        for (int i=1;i<=m;i++)            if (gcd(m,i)==1) a[j++]=i;        if (k%j!=0)            printf("%d\n",k/j*m+a[k%j-1]);        else printf("%d\n",(k/j-1)*m+a[j-1]);    }    return 0;}


原创粉丝点击