POJ 2356 Find a multiple
2013-05-03 19:28
375 查看
Find a multiple
Description
The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers is not greater than 15000. This numbers are not necessarily different (so it may happen that two or more of them will be equal). Your task is to choose a few of given numbers ( 1 <= few <= N ) so that the sum of chosen numbers is multiple for N (i.e. N * k = (sum of chosen numbers) for some natural number k).
Input
The first line of the input contains the single number N. Each of next N lines contains one number from the given set.
Output
In case your program decides that the target set of numbers can not be found it should print to the output the single number 0. Otherwise it should print the number of the chosen numbers in the first line followed by the chosen numbers themselves (on a separate line each) in arbitrary order.
If there are more than one set of numbers with required properties you should print to the output only one (preferably your favorite) of them.
Sample Input
Sample Output
Source
Ural Collegiate Programming Contest 1999
考察点: 鸽巢原理
Time Limit: 1000MS | Memory Limit: 65536K | |||
Total Submissions: 4642 | Accepted: 2020 | Special Judge |
The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers is not greater than 15000. This numbers are not necessarily different (so it may happen that two or more of them will be equal). Your task is to choose a few of given numbers ( 1 <= few <= N ) so that the sum of chosen numbers is multiple for N (i.e. N * k = (sum of chosen numbers) for some natural number k).
Input
The first line of the input contains the single number N. Each of next N lines contains one number from the given set.
Output
In case your program decides that the target set of numbers can not be found it should print to the output the single number 0. Otherwise it should print the number of the chosen numbers in the first line followed by the chosen numbers themselves (on a separate line each) in arbitrary order.
If there are more than one set of numbers with required properties you should print to the output only one (preferably your favorite) of them.
Sample Input
5 1 2 3 4 1
Sample Output
2 2 3
Source
Ural Collegiate Programming Contest 1999
考察点: 鸽巢原理
#include <stdio.h> #include <string.h> #include <math.h> int sum[11000],a[11000],pt[11000]; int main() { int i,j,n,m,s,t,key; while(scanf("%d",&n)!=EOF) { key=-1; memset(sum,0,sizeof(sum)); memset(pt,0,sizeof(pt)); for(i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; if(sum[i]%n==0) { key=i; } } if(key!=-1) { printf("%d\n",key); for(i=1;i<=key;i++) { printf("%d\n",a[i]); } continue; } for(i=1;i<=n;i++) { m=sum[i]%n; if(!pt[m]) { pt[m]=i; }else { break; } } printf("%d\n",i-pt[m]); for(j=pt[m]+1; j<=i ;j++) { printf("%d\n",a[j]); } } return 0; }
相关文章推荐
- 北大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 (dp + 鸽笼原理)
- POJ 2356 Find a multiple(抽屉原理)
- POJ-2356 Find a multiple(DFS,抽屉原理)
- [置顶]poj-2356-Find a multiple
- [POJ - 2356] Find a multiple(抽屉原理)
- Find a multiple POJ - 2356 鸽巢原理
- 【POJ 2356】Find a multiple(抽屉原理-好题)
- 【ACM】poj_2356_Find a multiple_201308061947
- 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 【抽屉原理应用】【在n个数组成的数列中找出若干个连续数使它们之和能被n整除】
- Find a multiple POJ - 2356
- POJ 2356 Find a multiple【鸽巢原理】