南阳oj813 对决
时间限制:1000 ms | 内存限制:65535 KB
难度:0
描述
Topcoder要招进来了 n
个新同学,Yougth计划把这个n个同学分成两组,要求每组中每个人必须跟另一组中每个同学进行一次算法对决,问存不存在一种分组方式在k场完成对决。(两组中每一组中人数都要大于0)
输入
有多组测试数据,每组测试数据两个数 n 和 k
,n和k都为0时表示输入结束。(0<n<10000,0<k<1000000)
输出
输出一行,如果可以,输出YES,不行的话输出NO。
样例输入
4
1
4 3
4 4
2 1
3 3
0
0
样例输出
NO
YES
YES
YES
NO*/
1 #include<stdio.h> 2 int main(){ 3 int n,k,a,b,m,t; 4 while(scanf("%d%d",&n,&k)&&(n!=0&&k!=0)){ 5 m=n%2; 6 if(m==0){ 7 for(t=0;t<n/2;t++){ 8 a=t*(n-t); 9 if(k==a) 10 printf("YES"); 11 break; 12 if(t==n/2){ 13 b=n/2*n/2; 14 if(k!=b) 15 printf("No");}}} 16 else 17 {for(t=0;t<(n-1)/2;t++){ 18 a=t*(n-t); 19 if(k==a) 20 printf("YES"); 21 break; 22 if(t==(n-1)/2){ 23 b=(n-1)/2*(n+1)/2; 24 if(k!=b) 25 printf("No");}}} 26 }return 0; 27 } 28 */ 29 #include<stdio.h> 30 int main(){ 31 int n,k,a,b,t; 32 while(scanf("%d%d",&n,&k)&&(n!=0&&k!=0)){ 33 34 for(t=1;t<=n/2;t++){ 35 a=t*(n-t); 36 if(k==a) 37 break;} 38 if(t<=n/2)/*判断t是在什么时候跳出的*/ 39 printf("Yes\n"); 40 else 41 printf("No\n"); 42 43 }return 0; 44 }
原文:http://www.cnblogs.com/acmgym/p/3676323.html