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. VS2019项目docker启动且访问SQLSERVER数据库配置

    VS2019编译.调试的Blazor纯前台项目,使用控制台启动,去连接纯后台的API项目,使用docker启动,并且通过EFCore访问SQLSERVER数据库,有几个地方需要修改配置: 一.前台连后 ...

  2. Zju1100 Mondriaan

    题目描述 有一个m行n列的矩阵,用1*2的骨牌(可横放或竖放)完全覆盖,骨牌不能重叠,有多少种不同的覆盖的方法? 你只需要求出覆盖方法总数mod p的值即可. 输入格式 三个整数数n,m,p,m< ...

  3. 网络流量预测入门(一)之RNN 介绍

    目录 网络流量预测入门(一)之RNN 介绍 RNN简介 RNN 结构 RNN原理 结构原理 损失函数$E$ 反向传播 总结 参考 网络流量预测入门(一)之RNN 介绍 了解RNN之前,神经网络的知识是 ...

  4. SpringCloud zuul 网关限流分析

    最近项目中 spring cloud zuul 运用到限流功能,打算配置一下就直接使用,不过在压测与调优过程中遇到一些没有预测到的问题,附上排查与解析结果 yml.pom配置 强烈推荐,按最新gith ...

  5. 从零开始学spring源码之ioc预热:bean的拓展和beanProcessor注册

    上篇聊完了bean的解析,说起来做的事情很简单,把xml文件里面配置的标签全部解析到spring容器里面,但是spring做的时候,花了那么大代价去做,后面看看到底值不值得呢. 接下来看看prepar ...

  6. Python+Selenium+Unittest实现PO模式web自动化框架(6)

    1.TestCases目录下的模块 TestCases目录下是存放测试用例的目录. TestCases目录下的测试用例采用unittest框架来构建. 例如:登录功能的测试用例.(test_1_log ...

  7. 找不到:DarchetypeCatalog=local

    设置IDEA Maven->Runner 界面的VM Options参数值为-DarchetypeCatalog=local 刷新项目Maven配置,在项目右边界面,重新引入Maven

  8. Go 和 Syscall

    曹春晖:谈一谈 Go 和 Syscall https://juejin.im/post/6844903845475139597

  9. mysqldump 内存消耗

    MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump - A Database Backup Program https://dev.mysql ...

  10. 4. Tomcat调优

    1,     调内存 JVM 2,     调网络处理框架  普通io/nio,netty https://segmentfault.com/a/1190000008873688 https://ww ...