poj 2356 Find a multiple(组合数学:鸽巢原理)
2014-08-20 22:17
323 查看
和poj 3370很像, 但这里只有一个n且对应n个数
根据鸽巢原理是应该存在一个i对应前i项和模n==0
但是题目中说了这n个数可以相同,所以可能存在不等于0的情况
比如:
5
1 5 5 5 5
但此时必然sum%n有重复
同poj 3370一样输出相同两数对应下标之间的数即可
代码如下:
根据鸽巢原理是应该存在一个i对应前i项和模n==0
但是题目中说了这n个数可以相同,所以可能存在不等于0的情况
比如:
5
1 5 5 5 5
但此时必然sum%n有重复
同poj 3370一样输出相同两数对应下标之间的数即可
代码如下:
#include <cstdio> #include <cstring> #define MAXN 100100 using namespace std; int flag[MAXN]; int a[MAXN]; int main(void) { int n, c, sum, tmp; while(scanf("%d", &n) != EOF) { sum = 0; memset(flag, 0, sizeof(flag)); for(int i=1; i<=n; ++i) { scanf("%d", &a[i]); } for(int i=1; i<=n; ++i) { sum += a[i]; tmp = sum%n; sum %= n; if(tmp == 0) { printf("%d\n%d\n", i, a[1]); for(int j=2; j<=i; ++j) printf("%d\n", a[j]); break; } else { if(flag[tmp]) { printf("%d\n%d\n", i-flag[tmp], a[flag[tmp]+1]); for(int j=flag[tmp]+2; j<=i; ++j) printf("%d\n", a[j]); break; } } flag[tmp] = i; } } return 0; }
相关文章推荐
- (组合数学3.3.1.1)POJ 2356 Find a multiple(抽屉原理)
- POJ 2356 Find a multiple(组合数学-抽屉原理)
- poj 2356 Find a multiple 鸽巢原理的简单应用
- POJ 2356 Find a multiple 鸽巢原理
- POJ 2356:Find a multiple (鸽巢原理)
- POJ 2356 Find a multiple 鸽巢原理
- POJ:2356 Find a multiple(鸽巢原理)
- poj 2356 Find a multiple(鸽巢原理+标记)
- poj2356 Find a multiple(鸽巢原理)
- POJ 2356 Find a multiple(鸽巢原理)
- POJ 2356 Find a multiple【鸽巢原理】
- Find a multiple POJ - 2356 鸽巢原理
- POJ 2356 Find a multiple (鸽巢原理)
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
- POJ 2356 Find a multiple 鸽巢原理pigeon hole题解
- poj 2356 Find a multiple(鸽巢原理)
- POJ2356 Find a multiple【鸽巢原理】
- POJ 2356 Find a multiple (鸽巢原理)
- Find a multiple(组合数学:鸽巢原理的简单应用)
- POJ 2356 Find a multiple 【数学/抽屉原理】