poj2356 抽屉原理
来源:互联网 发布:平方c语言 编辑:程序博客网 时间:2024/05/18 13:31
题目链接
题意:给你n个不大于15000的自然数,其中有些数可能相同,让你在其中选择一些数让他们的总和是n的倍数,若存在,输出选择数的个数和这些数,不存在则输出0
n<=10000;
设n个数分别为a1,a2...an,前缀和分别为s1,s2...sn,让前缀和对n取模,则有n个取模后的数,这些数一定在0~n-1之间,由抽屉原理,这些数中一定有两个数相同,故答案即为这两个前缀之间的数,所以不存在输出0的情况
#include<cstdio>#include<algorithm>#include<iostream>using namespace std;int main(){int n;cin>>n; int s,e; int rem[10005]={0},z[10005]={0},a[10005]; for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++){ z[i]=z[i-1]+a[i]; z[i]=z[i]%n; if(z[i]==0){ s=1; e=i; break; } else if(rem[z[i]]){ s=rem[z[i]]+1; e=i; break; } else rem[z[i]]=i; } printf("%d\n",e-s+1); for(int i=s;i<=e;i++) printf("%d\n",a[i]);}
0 0
- poj2356 抽屉原理
- poj2356 Find a multiple 抽屉原理
- POJ2356 Find a multiple 抽屉原理(鸽巢原理)
- poj2356——Find a multiple(抽屉原理)
- poj2356(鸽巢原理)
- poj2356
- poj2356
- poj2356
- poj2356
- poj2356 Find a multiple(鸽巢原理)
- poj2356 Find a multiple(鸽巢原理)
- POJ2356 Find a multiple【鸽巢原理】
- 【POJ2356】Find a multiple(鸽巢原理)
- 【HDU1205/POJ2356/POJ3370】鸽巢原理专题
- 抽屉原理
- 抽屉原理
- 抽屉原理
- 抽屉原理
- 即使是一个技术人员,也需要知道沟通的重要性
- 海量数据处理题
- 算法训练 表达式计算
- android之ExpandableListView
- Android 学习资源
- poj2356 抽屉原理
- Linux基础命令1
- 基于Swift使用FMDB实现(增删改查+搜索+聊天置顶+分页读取)
- Django学习笔记
- java代码操作cmd二次运行新java程序
- Unity学习日记
- 安装MySQL总出现3534错误,也许你可以试试用cmd打开
- c#中访问修饰符和声明修饰符
- 算法提高 统计单词数