题目连接

 抽屉原理:如果现在有3个苹果,放进2个抽屉,那么至少有一个抽屉里面会有两个苹果

抽屉原理的运用

现在假设有一个正整数序列a1,a2,a3,a4.....an,试证明我们一定能够找到一段连续的序列和,让这个和是n的倍数,该命题的证明就用到了抽屉原理

我们可以先构造一个序列si=a1+a2+...ai

然后分别对于si取模,如果其中有一个sk%n==0,那么a1+a2+...+ak就一定是n的倍数(该种情况得证)

下面是上一种情况的反面,即任何一个sk对于n的余数都不为0

对于这种情况,我们可以如下考虑,因为si%n!=0

那么si%n的范围必然在1——(n-1),所以原序列si就产生了n个范围在1——(n-1)的余数,于是抽屉原理就来了,n个数放进n-1个盒子里面,必然至少有两个余数会重复,那么这两个sk1,sk2之差必然是n的倍数,

而sk1-sk2是一段连续的序列,那么原命题就得到了证明了

实现代码如下

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int sum[],vis[];
int main()
{
int n,m,t,i,j,flag,a;
scanf("%d",&t);
while(t--)
{
memset(vis,,sizeof(vis));
memset(sum,,sizeof(sum));
vis[]=;flag=;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
{
scanf("%d",&a);
sum[i]+=(sum[i-]+a)%m;
if(vis[sum[i]]){flag=;}
else vis[sum[i]]=;
}
if(flag)
printf("YES\n");
else printf("NO\n");
}
return ;
}

hdu5776sum的更多相关文章

随机推荐

  1. vscode 右键文件或者文件夹显示菜单

    1.这个是可以在安装时直接选择显示的,如果跟我一样没有选也不愿意重新安装的,可以复制下面代码保存为vsCodeOpenFolder.reg,红色部分是vscode安装路径,换成自己本地路径即可. 双击 ...

  2. java中的值传递和引用传递区别

    值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响 ...

  3. iphone手机分辨率--持久维护

    6.5英寸 —— 1242 x 2688 px —— Xs Max 6.1英寸 —— 828 x 1792 px —— XR 5.8英寸 —— 1125 x 2436 px —— X/Xs 5.5英寸 ...

  4. 使用java+TestNG进行接口回归测试

    TestNG是一个开源自动化测试框架,“NG”表示下一代(Next Generation的首字母). TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展,相较于Juni ...

  5. Space is not allowed after parameter prefix ':'

    问题:在hibernate中执行mysql语句,如果mysql语句中含有@a := 1 之类的变量,回报这个错误 语句类似于“set @rownum=0, @preval=null; select @ ...

  6. 流式 storm介绍

    Storm是什么 如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统.按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义.我们都知道,根据goo ...

  7. 深入Asyncio(三)Asyncio初体验

    Asyncio初体验 Asyncio在Python中提供的API很复杂,其旨在替不同群体的人解决不同的问题,也正是由于这个原因,所以很难区分重点. 可以根据asyncio在Python中的特性,将其划 ...

  8. Java8中 Date和LocalDateTime的相互转换

    一.在Java 8中将Date转换为LocalDateTime 方法1: 将Date转换为LocalDatetime,我们可以使用以下方法: 1.从日期获取ZonedDateTime并使用其方法toL ...

  9. The template root requires exactly one element

    The template root requires exactly one element

  10. Linux系统中的python2.x升级至python3

    python2.x升级至python3 由于需要在公司测试环境搭建的Jenkins上面运行接口自动化脚本,所以需要对Jenkins所处的服务器的python环境进行升级,以便运行python3编写的脚 ...