16 2 1 2 3 1 3 67 1 2 100 1 2 8 6 8 9 6 8 10 6 8 11 6 8 12 6 8 13 6 8 14 6 8 15 6 8 16 6 8 1314 6 8 1994 1 13 1994 7 12Sample Output
Case #1: Iaka Case #2: Yuwgna Case #3: Yuwgna Case #4: Iaka Case #5: Iaka Case #6: Iaka Case #7: Yuwgna Case #8: Yuwgna Case #9: Iaka Case #10: Iaka Case #11: Yuwgna Case #12: Yuwgna Case #13: Iaka Case #14: Yuwgna Case #15: Iaka Case #16: Iaka
转载来自:https://blog.csdn.net/mystery_guest/article/details/52072810
emmm昨天做这题的时候没有想到gcd被题目的样例给误导了 一直想的是他们的差值的多少却没有想到其他的
今天看了下题解是扩展欧几里得
意思就是如果ab互为质数的话那么一定可以得到一个1 那么一定也可以得到每个东西或者a==1||b==1
如果他们不互相为质数的话 那么他们可以取到他们的最大公约数里面所有有关公约数的倍数
就是这个样子那么就是n的个数除以他们的最大公约数就是里面可能的个数 之后减不减2都无所谓
代码:
#include
using namespace std;
int main()
{
int t,n,a,b;cin>>t;
for(int i=1;i<=t;i++)
{
scanf("%d%d%d",&n,&a,&b);
int temp = __gcd(a,b);
printf("Case #%d: ",i);
if(a==1||b==1||temp==1)//如果ab互质
{
if(n%2==1)printf("Yuwgna\n");
else printf("Iaka\n");
}else //如果ab不互质 那么只要是gcd都能修建
{
int gg=n/temp-2;
if(gg%2==1)printf("Yuwgna\n");
else printf("Iaka\n");
}
}
return 0;
}