1 /*
2 这道题用到了鸠巢原理又名容斥原理,我的参考链接:https://blog.csdn.net/guoyangfan_/article/details/102559097
3
4 题意:
5 这道题给你了n个数,让你找这n个数中有没有几个数的和是n的倍数
6
7 题解:
8 你循环遍历一遍这n个数,如果某个数是n的倍数,那就输出一个1再输出这个数
9 如果没有的话,那就对这n个数求一下求前缀和。
10 1、在循环遍历一遍这个前缀和,如果某个数是n的倍数,那就输出i,再循环打印出1到i的值(这个i是我们假设的一个下标)
11 2、如果没有n的倍数的话,那就肯定至少有两个数取余于n的结果一样
12 是不是想问为什么?嘿嘿
13 你想一共有n个数,而且这里面没有n的倍数,那么都取余于n之后是没有0的
14 但是1——n这才一共n-1个数不相同,而你有n个数,那么我们上面的话就得以证明了^_^
15
16 我们接着说,有了两个数取余于n结果一样,比如是1——i的前缀和 和 1——j的前缀和 取余于n的结果一样
17 那么i+1——j这一段所有数的和不久正是n的倍数嘛。
18 */
19 #include<stdio.h>
20 #include<string.h>
21 #include<iostream>
22 #include<algorithm>
23 using namespace std;
24 typedef long long ll;
25 const int maxn=10005;
26 int v[maxn],sum[maxn],p[15005];
27 int main()
28 {
29
30 int n,flag=0;
31 scanf("%d",&n);
32 for(int i=1;i<=n;++i)
33 {
34 scanf("%d",&v[i]);
35 if(v[i]%n==0)
36 {
37 flag=i;
38 }
39 sum[i]=(v[i]+sum[i-1])%n;
40 }
41 if(flag)
42 {
43 printf("1\n%d\n",v[flag]);
44 }
45 else
46 {
47 for(int i=1;i<=n;++i)
48 {
49 if(p[sum[i]])
50 {
51 printf("%d\n",i-p[sum[i]]);
52 for(int j=p[sum[i]]+1;j<=i;++j)
53 printf("%d\n",v[j]);
54 flag=0;
55 break;
56 }
57 else p[sum[i]]=i;
58 if(sum[i]==0)
59 {
60 flag=i;
61 break;
62 }
63 }
64 if(flag)
65 {
66 printf("%d\n",flag);
67 for(int i=1;i<=flag;++i)
68 printf("%d\n",v[i]);
69 }
70 }
71 return 0;
72 }

Find a multiple POJ - 2356 容斥原理(鸠巢原理)的更多相关文章

  1. Find a multiple POJ - 2356 【鸽巢原理应用】

    Problem DescriptionThe input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). E ...

  2. Find a multiple POJ - 2356

    The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers ...

  3. Mathematics:Find a multiple(POJ 2356)

    找组合 题目大意:给你N个自然数,请你求出若干个数的组合的和为N的整数倍的数 经典鸽巢原理题目,鸽巢原理的意思是,有N个物品,放在N-1个集合中,则一定存在一个集合有2个元素或以上. 这一题是说有找出 ...

  4. B - 抽屉 POJ - 2356 (容斥原理)

    The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers ...

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

    抽屉原理: 形式一:设把n+1个元素划分至n个集合中(A1,A2,…,An),用a1,a2,…,an分别表示这n个集合对应包含的元素个数,则:至少存在某个集合Ai,其包含元素个数值ai大于或等于2. ...

  6. 组合数学--容斥原理&鸽巢原理

    一次会议由1990位数学家参加,每人至少有1327位合作者.证明可以找到4位数学家,他们当中每两个人都合作 优质解答 这题可以分两步来做.第一,先证明一定有三个人,他们相互合作过.可以先找两个相互合作 ...

  7. POJ 2356 Find a multiple 抽屉原理

    从POJ 2356来体会抽屉原理的妙用= =! 题意: 给你一个n,然后给你n个数,让你输出一个数或者多个数,让这些数的和能够组成n: 先输出一个数,代表有多少个数的和,然后再输出这些数: 题解: 首 ...

  8. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  9. poj 2356 Find a multiple(鸽巢原理)

    Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...

随机推荐

  1. 【Oracle】11g direct path read介绍:10949 event、_small_table_threshold与_serial_direct_read

    转自刘相兵老师的博文: http://www.askmaclean.com/archives/11g-direct-path-read-10949-_small_table_threshold-_se ...

  2. ctfhub技能树—文件上传—.htaccess

    首先介绍一下.htaccess(来自百度百科) .htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口).提供了针对目录改变配置的方法 ...

  3. RSA共模攻击

    在安恒月赛中碰到一道密码学方向的ctf题 附上源码 from flag import flag from Crypto.Util.number import * p=getPrime(1024) q= ...

  4. postgresql-12编译安装

    1 准备环境 修改yum源 mkdir -p /etc/yum.bak mv /etc/yum.repos.d/* /etc/yum.bak/ &&\ curl -o /etc/yum ...

  5. 量子化学Gaussian技术实战课 2021年4月9号--12号 远程在线教学

    材料模拟分子动力学课程 3月19号--22号 远程在线课 lammps分子动力学课程 3月12号--15号 远程在线课 第一性原理VASP实战课 3月25号-28号 远程在线课 量子化学Gaussia ...

  6. linux驱动设备号

    一.设备号基础 一般来说,使用ls -l命令在时间一列的前一列的数字表示的是文件大小,但如果该文件表示的是一个设备的话,那时间一列的前一列将有两个数字,用逗号分隔开,如下图: 前一个数字表示主设备号, ...

  7. Connections could not be acquired from the underlying database!

    Connections could not be acquired from the underlying database! 报错截图: 报错内容: Exception in thread &quo ...

  8. e.next = nil // avoid memory leaks e.prev = nil // avoid memory leaks

    /Go/src/container/list/list.go:10

  9. Service Mesh架构的持续演进 单体模块化 SOA 微服务 Service Mesh

    架构不止-严选Service Mesh架构的持续演进 网易严选 王育松 严选技术团队 2019-11-25 前言同严选的业务一样,在下层承载它的IT系统架构一样要生存.呼吸.增长和发展,否则过时的.僵 ...

  10. Docker 中的网络功能介绍 外部访问容器 容器互联 配置 DNS

    Docker 中的网络功能介绍 | Docker 从入门到实践 https://vuepress.mirror.docker-practice.com/network/ Docker 允许通过外部访问 ...