poj 2356 and 3370 鸽巢原理
来源:互联网 发布:银魂中空知大猩猩 编辑:程序博客网 时间:2024/05/17 08:18
题意 : 给你n个整数,取其中的任意个整数满足相加的和是n的倍数
处理出前k个数的sum[k] (1 <= k <= n) 并且对n取余 , 如果有一个sum[k]等于0,自然这个sum就是n的倍数。
POJ 3370 code
处理出前k个数的sum[k] (1 <= k <= n) 并且对n取余 , 如果有一个sum[k]等于0,自然这个sum就是n的倍数。
根据鸽巢原理,有n个余数 , 余数0 ~ n ,如果没有余数0,至少有两个余数相同,那么这两个sum相减得到的就是n的倍数
POJ2365 code
#include <stdio.h>int a[11111] , sum[11111], vis[11111];int main(){int n,i,j;while(scanf("%d", &n)!=-1){for(i = 1;i <= n; i++){scanf("%d", &a[i]);sum[i] = sum[i-1]+a[i];sum[i] %= n;vis[i] = 0;}for(i = 1;i <= n; i++){if(sum[i]==0){printf("%d\n", i);for(j = 1;j <= i; j++)printf("%d\n", a[j]);break;}else if(vis[sum[i]]){printf("%d\n", i-vis[sum[i]]);for(j = vis[sum[i]]+1;j <= i ;j++)printf("%d\n", a[j]);break;}vis[sum[i]] = i;}}return 0;}
POJ 3370 code
#include <stdio.h>int a[111111] , sum[111111], vis[111111];int main(){int n,i,j,c;while(scanf("%d%d", &c , &n)!=-1 && c){for(i = 1;i <= n; i++){scanf("%d", &a[i]);sum[i] = sum[i-1]+a[i];sum[i] %= c;vis[i] = 0;}for(i = 1;i <= n; i++){if(sum[i]==0){for(j = 1;j < i; j++)printf("%d ", j);printf("%d\n", j);break;}else if(vis[sum[i]]){for(j = vis[sum[i]]+1;j < i ;j++)printf("%d ", j);printf("%d\n", j);break;}vis[sum[i]] = i;}}return 0;}
- poj 2356 and 3370 鸽巢原理
- 鸽巢原理 ..POJ 2356 & 3370
- poj 3370/2356 鸽巢原理
- POJ 3370 鸽巢原理
- poj 2356 鸽巢原理
- POJ 2356 鸽巢原理
- poj 2356 鸽巢原理
- POJ 2356 鸽巢原理
- poj 3370(鸽巢原理。。。水)
- POJ-3370(鸽巢原理)
- POJ 3370 Halloween treats 鸽巢原理
- POJ 3370 Halloween treats 鸽巢原理
- POJ 3370 Halloween treats 鸽巢原理
- POJ 3370 Halloween treats - 鸽巢原理
- POJ 3370 Halloween treats【鸽巢原理】
- poj 2356(鸽巢原理。。。。。)
- 鸽巢原理(入门) 之 poj 2356
- POJ 2356 find multiple 鸽巢原理
- 第四章 Shell的控制结构
- mail命令发邮件标题和内容都使用中文编码
- 《你必须知道的495个C语言问题》
- [c++]stl map
- ListItemEventHandler does not fire on the prospective list
- poj 2356 and 3370 鸽巢原理
- hdu 1021
- /etc/hosts与/etc/resolv.conf
- 区域划分问题总结
- 编程求解字符串中每个字母出现的次数
- 你应该知道的C语言预处理
- PHP自学之路------超全局变量
- 献给正在打拼的人
- 程序人生--一个程序员对学弟学妹建议(转载)