/*题意就是给你n个人,从中选出m个人,使其总和为n的倍数。
这个题为明显的抽屉原理。首先,预处理一个数组s记录前i项和,i:1-n。
若前i项和中有一项能被n整数,则符合题意输出一种方案。
否则,n个s[i]中必定至多有n-1中余数,即至少两个Si同余。则将他们找出,输出两个下标中间的项即为符合题意的方案。*/
#include <stdio.h>
#include <cstring>
int s[10001];
int a[10001];
int m[10001];
bool v[10001];
int main()
{int n;while(scanf("%d",&n)==1){memset(s,0,sizeof(s));memset(m,0,sizeof(m));memset(v,false,sizeof(v));bool ret=false;for(int i=1; i<=n; i++){scanf("%d",&a[i]);s[i]=s[i-1]+a[i];s[i]=s[i]%n;}for(int i=1; i<=n; i++){if(s[i]==0){ret=true;printf("%d\n",i);for(int j=1; j<i; j++)printf("%d ",a[j]);printf("%d\n",a[i]);break;}}if(ret) continue;int e=0;for(int i=1; i<=n; i++){if(!v[s[i]]){v[s[i]]=true;m[s[i]]=i;//用来记录余数相同的第一个下标}else{e=i;//余数相同的第二个下标break;}}printf("%d\n",e-m[s[e]]);for(int i=m[s[e]]+1; i<e; i++)printf("%d ",a[i]);printf("%d\n",a[e]);}return 0;
}

Team Mate 抽屉原理相关推荐

  1. poj2356(抽屉原理)

    题意:从输入的N个元素中找出是N的倍数的元素并且输出: 因为这个要求的是连续的数之和,先用sum数组求和:sum[1],sum[1]+sum[2],--,sum[1]+sum[2]+--+sum[n] ...

  2. 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)

    链接:https://ac.nowcoder.com/acm/contest/5203/B 来源:牛客网 题目描述 Listening to the music is relax, but for o ...

  3. POJ 2356 Find a multiple (抽屉原理)

    感觉这个题很不错,至少开始真的没想道可以用抽屉原理推出一个结论,然后把这题秒掉.... 已知有n个元素,sum[i]表示从1到i所有数的和...sum[i]%n可以得到一个剩余系,如果出现0,那么结果 ...

  4. 鸽巢原理(抽屉原理)的详解

    抽屉原理 百科名片 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含义为: ...

  5. POJ 2356 (抽屉原理)

    题目中说:随便输出一组.抽屉原理可以求出取出的数连续的情况. #include <iostream> #include<cstdio> using namespace std; ...

  6. Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)

    Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理.倒排索.建立查找树.处理Hash冲突.Hash查找) 目录 一.SimHash算法 1.SimHash算法五个步骤 2. ...

  7. 14. 不修改数组找出重复的数字【难度: 一般 / 知识点: 抽屉原理 二分】

    第一种方法: 开了map计数,多用了空间,map: logn,时间复杂度O(nlogn) class Solution {public:int duplicateInArray(vector<i ...

  8. hdu 3303(线段树+抽屉原理)

    解题思路:这题利用了抽屉原理,即1-M之间的所有数与M+1的模都不相同.那么可以利用它将要查找所有区间分成[1,Y-1],[Y,2*Y-1],[2*Y,3*Y-1].........一直下去,直到所有 ...

  9. N的倍数(抽屉原理)

    一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数. Input ...

最新文章

  1. Go 定时器和断续器
  2. 开发笔记:掉落系统模块设计思路
  3. java中sql语句怎么把开始和结束时间作为参数写sql查询_JDBC数据库连接怎么操作?...
  4. 虚拟机安装 xp步骤(参照百度文库)
  5. 渐变背景免费UI设计素材专辑,让设计显得魅力非凡
  6. Zabbix如何通过ODBC对接Oracle获取相关数据
  7. Lean Startup实战
  8. 用vb写计算机程序代码,用VB编写的抽奖程序源代码随机抽取不重复
  9. C语言编程题如何提交源程序,c语言课后习题源程序.doc
  10. Chrome保存整个网页为图片
  11. Fabric2.3分布式部署
  12. 【教3妹学java】JVM调优有哪些工具?
  13. GSEA介绍--鹏鹏原创,必是精品
  14. Python 如何被证明是 2021 年的转折点语言
  15. R SMOTE 报错 length of 'dimnames' [2] not equal to array extent
  16. 一个企业如何运营微商管理系统?
  17. php 字体如何加粗和调大小,如何在PHP中使文本变为粗体?
  18. shell脚本练习集合1
  19. SAP之FIORI(5)-对话框与提示框
  20. 第二十八篇 网页实战之静态网页爬取,四大案例,小说,书,图片等抓取操作

热门文章

  1. 谈谈如何更有效率的交换友情链接
  2. 自主做一个类似于微博的项目(计划篇)
  3. E. String Reversal (树状数组)
  4. 苹果5怎么显示是4g网络连接服务器,苹果5有4g网络吗 苹果5怎么样【图解】
  5. C语言 二维数组和函数综合编程练习
  6. 将任意字符串中的汉字提取出来的方法
  7. 打怪升级-世界机器人开发者大赛
  8. linux 混音设备,一个linux 混音播放的 /etc/asound.conf 配置
  9. ubuntu安装以及启动nginx
  10. 简单易懂的解释什么是WebAssembly