给定a,b,设G=gcd(a,b),于是有a=A*G,b=B*G(1<=A,B,gcd(A,B)=1)
对于a的多次加可以看成K*a(1<=k),转化成(K*a)%b的所有结果能否表示成0..b-1中的所有数,
假(K*a)%b=M,M=K*a-W*b(W为使M>0的最大整数),M=K*A*G-W*B*G M%G==0,
既结果是G的倍数,如果想取得0..b-1中的所有数,
那么必须G=1才可能..
这算法牛X。。。
#include"stdio.h"
int main()
{
long m,n,k,i;
while(scanf("%ld%ld",&m,&n)!=-1)
{ printf("%10ld%10ld ",m,n);
k=1;
for(i=2;i<=(m>n?n:m);i++)
{
if(m%i==0&&n%i==0)
k=i;
}
if(k==1)
printf("Good Choice\n\n");
else
printf("Bad Choice\n\n");
}
}