暑假热身 E. 无聊的LSY

LSY大牛没事就爱玩游戏,包括很多很无聊的游戏。某日,LSY大牛又找到了一个无聊的游戏:每一局游戏的开始,LSY大牛将代表自己的棋子放在一个线性棋盘的最左端(第0个格子,可以认为向右端无限延伸),接着,他会从浩大的牌堆里随机摸三张牌A,B和N,在本局中,LSY大牛可以将代表自己的棋子向左或者向右移动A或者B个格子,当LSY的棋子停在了第N个格子上的时候,LSY大牛将获得本局比赛的胜利。当然,这游戏实在是有点太无聊了……于是LSY大牛希望大家写一个小程序来帮助他判断当前比赛是否能够获胜。

 

Input

测试数据有多组。每一行为一组测试数据,分别为A,B,N三个数的值(0<A,B,N<100000)。

当输入0 0 0的时候退出,此行数据不处理。
 
 

Output

对于每一组测试数据,若LSY大牛可以赢的本局比赛的胜利,则输出YES,否则输出NO。

 

Sample Input

3 5 7
2 4 5
0 0 0

Sample Output

YES
NO
#include<stdio.h>
int main()
{
int A,B,T,S,N,M=,Q=,v=,i;
while()
{
scanf("%d %d %d",&A,&B,&N);
if(A==&&N==&&B==){break;}
if(A==B&&N==||A==B&&N%A==){printf("YES\n");goto as;}
if(A%==&&B%==&&N%!=){printf("NO\n");goto as;}
if(A==||B==){printf("YES\n");goto as;}
if(A>B){T=B;}
if(A<B){T=A;}
for(i=T-;i>=;i++)
{
if(A%i==&&B%i==)
{
v=;break; //不互质
}
} if(v==){printf("YES\n");goto as;}
if(v==)
{
while(){
if(A>B){S=A;T=B;}
if(A<B){S=B;T=A;}
M=S-T;
A=M;
B=T;
if(M==||M==N){printf("YES\n");goto as;}
if(M==T&&N==){printf("YES\n");goto as;}
if(M==T&&N!=){S=;break;}
}
if(S==&&N%M==){printf("YES\n");goto as;}
}
printf("NO\n");
as: A=B=T=S=N=M=Q=;v=;
}
return ;
}

写了好多if判断有点复杂了,附上大神代码写的果然简练。

#include<stdio.h>
int main()
{
int a, b, n;
int i, j; //
while()
{
scanf("%d%d%d", &a, &b, &n);
if( a == && b == && n == )
break;
else
{
for( i = ; i <= a; i++ )
{
if( a % i == && b % i == )
j = i;
}
if( n % j == )
printf("YES\n");
else
printf("NO\n");
}
}
return ;
}
上一篇:Jquery判断数组中是否包含某个元素$.inArray()的用法


下一篇:怎样在 Ubuntu 中修改默认程序