死神来了
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
有一天,王小子在遨游世界时,遇到了一场自然灾害。一个人孤独的在一个岛上,没有吃的没有喝的。在他饥寒交迫将要死亡时,死神来了。由于这个死神在成神之前是一个数学家,所以他有一个习惯,会和即死之人玩一个数学游戏,来决定是否将其灵魂带走。游戏规则是死神给王小子两个整数n(100<=n<=1000000),m(2<=m<=n),在1~n个数中,随机取m个数,问在这m个数中是否一定存在一个数是另一个数的倍数,是则回答“YES",否则”NO"。如果王小子回答正确,将有再活下去的机会。但是他很后悔以前没有好好学习数学,王小子知道你数学学得不错,请你救他一命。
- 输入
- 有多组测试数据,不多于10000;
每组有两个数n,m;
以文件结束符EOF为结束标志。 - 输出
- 输出"YES"或"NO"。
- 样例输入
100 80
100 20- 样例输出
YES
NO- 来源
思路:鸽巢原理
假如存在倍数关系,有倍数关系的当为一组。当n为偶数,最多有n/2组分组;假如是奇数,最多有n/2+1组分组,统一写为n/2+(n&1)组
将m个数分配,只有当m>n时,才会出现一个组内有两个数,且两数为倍数关系
代码:
#include<cstdio>
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
n=n/2+(n&1);
if(m>n)printf("YES\n");
else printf("NO\n");
}
return 0;
}