poj 2773 Happy 2006

#include <iostream>        //求出<=m的互质的 大于m的都是在上面加m的倍数 
using namespace std;
int prime[1000000];
int gcd(int n,int m)
{
if(n<m)
swap(n,m);
int r;
while(m!=0)
{
r
=n%m;
n
=m;
m
=r;
}
return n;
}
int main()
{
int m,k,i,j;
while(cin>>m>>k)
{
j
=0;
for(i=1;i<=m;++i) //不能写成i<m,因为要考虑m==1的情况
if(gcd(m,i)==1)
prime[
++j]=i;
if(k%j==0) //要另外处理 k%j==0
cout<<m*(k/j-1)+prime[j]<<endl;
else
cout
<<m*(k/j)+prime[k%j]<<endl;
}
return 0;
}

  

posted on 2011-07-22 19:51  sysu_mjc  阅读(139)  评论(0编辑  收藏  举报

导航