题目描述:
求第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;
}