描述
Topcoder 招进来了 n 个新同学,Yougth计划把这个n个同学分成两组,要求每组中每个人必须跟另一组中每个同学进行一次算法对决,问存不存在一种分组方式在k场完成对决。(两组中每一组中人数都要大于0)
//注意:这里给的是在k场完成对决而不是k场之内完成对决;
输入
有多组测试数据,每组测试数据两个数 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
提示
4个人分成两组,1和3则需对决3场,2和2则需对决4场。
代码如下
#include< stdio.h>
int main()
{
int n,k,i,a=0;
while(scanf(“%d %d”,&n,&k)!=EOF)
{
a=0;//每次循环将a进行重置;
if(n==0&&k==0)//首先,依题意,n跟k同时为0,结束输出;
{
break;
}
for(i=1; i< n; i++)
{
if(i*(n-i)==k)//这里将i*(n-i)与k进行比较;
{
a=1;//即,倒着比较,如果有一个相等,即令a=1;
break;
}
}
if(a)//这里if里面判断,如果a不为0,就执行;
printf(“YES\n”);
else//如果a为0,输出NO即可;
printf(“NO\n”);
}
return 0;
}