NYOJ世界末日【抽屉原理】
来源:互联网 发布:linux不保存退出vi 编辑:程序博客网 时间:2024/05/22 14:14
世界末日
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描述
- 世界末日马上就要来临了,当然,每个人都想买到船票,但是由于船票有限,因此需要回答对一个问题才能买票。问题是这样的:给你一个数n (1 <= n <= 10000),之后给n个正整数 (<= 10000),问在这n个数中是否存在一些数的和是n的倍数。
- 输入
- 多组测试数据(最多100组)。首先输入一个数n,然后输入n个数。
- 输出
- 如果能找到一些数的和是n的倍数,输出"YES",否则输出"NO"。
- 样例输入
55 3 6 7 9
- 样例输出
YES
抽屉原理。
sum[0]=0;
sum[i]=(a[1]+a[2]+a[3]...a[i])%n;
如果存在i>0 使得sum[i]=0;则直接输出a[1],a[2],,....a[i]即可满足题意。
如果不存在,考虑sum[ j ]-sum[ i ]=a [ i+1 ],a[ i+2 ]....a[ j ]。
即如果存在sum[ j ]-sum[ i ]==0,则输出 a [ i+1 ],a[ i+2 ]....a[ j ] 即可。
接下来用抽屉原理证明 i , j 必然存在。
抽屉原理:
如果将大于n个数量的物品放入n个抽屉,则必然存在某个抽屉放了大于1个物品。
因为sum [ i ] 的值只能是1,....n-1.sum [ i ]的数量有n个。
所以由抽屉原理可知,必然存在某两个sum [ i ] 值一样。#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;char s[50000];int main(){int n;while(scanf("%d",&n)==1){getchar();gets(s);printf("YES\n");}return 0;}
0 0
- NYOJ世界末日【抽屉原理】
- NYOJ636 世界末日 抽屉原理
- nyoj636 世界末日 抽屉原理
- poj 2356 &&poj 3370(开挂) 抽屉原理(鸽巢原理)同nyoj 636世界末日
- nyoj636世界末日(传说中的抽屉原理)
- nyoj-636-世界末日
- NYOJ,636,世界末日
- nyoj-636-世界末日
- NYOJ 636 世界末日
- NYOJ 636 世界末日
- NYOJ 636 世界末日
- NYOJ 636 世界末日
- 世界末日
- 世界末日
- 世界末日
- 世界末日
- 世界末日
- 世界末日
- Android--Camera.addCallbackBuffer/setPreviewCallbackWithBuffer模式使用总结
- Ubuntu-图形界面和字符界面转换、指定默认启动界面
- 指针参数与数组对数
- 大型网站技术架构读书笔记-高可用架构
- MFC中的C++(一)
- NYOJ世界末日【抽屉原理】
- TCP/IP, WebSocket 和 MQTT
- 利用ajax实现页面的无刷新
- HDU-动能定理-人的降落
- FFmpeg 获取h264裸码流
- 堆对象的new与delete
- 软交所助力国家级软件评测中心
- 单文件上传
- head first series 学习记录(Python)