对决
来源:互联网 发布:细集料坚固性试验数据 编辑:程序博客网 时间:2024/06/10 01:40
对决
时间限制: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 14 34 42 13 30 0
- 样例输出
NOYESYESYESNO
- 提示
- 4个人分成两组,1和3则需对决3场,2和2则需对决4场。
- 来源
- Yougth原创
- 上传者
TC_杨闯亮
问题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=813
问题分析:
设y为分组情况为(x,n-x)情况下的比赛次数,则y=x(n-x) 其中x>=1且为整数。因为y=x(n-x) 由求根公式
- 带入可以求出x。问题就转换为是否存在一个y,使得x为整数。
- 从理论上分析后再看题目可以用程序来模拟所有可能,从而来判断是否有满足条件的分组情况,如代码所示。
- (一开始看错题了,以为是让求是否在k次内比完的,后来发现是要求正好k场比完。)
- 代码:
#include <iostream>#include <stdio.h> #include <string.h>#include <math.h>#include <vector>#include <queue>#include <stack>#include <map>#include <string>#include <algorithm>using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) {int n,k;while(scanf("%d%d",&n,&k)!=EOF&& (n != 0 || k!=0)){for(int i=1;i<n/2+1;i++){if(k == i*(n-i)){printf("YES\n");goto loop;}}printf("NO\n");loop:;}return 0;}
阅读全文
0 0
- 对决
- 对决
- 对决
- 对决
- 对决
- 对决
- 对决
- 对决
- 对决
- 对决
- 对决算法
- 经典对决!
- acm-对决
- nyoj_813对决
- 巅峰对决
- 813 对决
- nyoj 对决
- nyoj813对决
- HTMT颜色标签的应用
- 构造方法和析构方法的区别
- Unity笔记:cloth布料穿透
- Android Audio之AudioTrack和AudioFlinger怎么联系起来的?
- c++模板一点
- 对决
- 基本排序算法
- 如何解决在eclipse部署项目无法访问到Tomcat预览界面
- 深入理解uCOS-II内核之任务
- Linux运维笔记-文档总结-Firewalld服务
- Spark RDD API 参考示例(五)
- 显示文件中的所有字符
- 结构体对齐
- Linux下的信号(三)----捕捉信号与sleep模拟