博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2356 Find a multiple(抽屉原理|鸽巢原理)
阅读量:5098 次
发布时间:2019-06-13

本文共 990 字,大约阅读时间需要 3 分钟。

/*引用过来的题意:    给出N个数,问其中是否存在M个数使其满足M个数的和是N的倍数,如果有多组解,    随意输出一组即可。若不存在,输出 0。题解:    首先必须声明的一点是本题是一定是有解的。原理根据抽屉原理:    因为有n个数,对n个数取余,如果余数中没有出现0,根据鸽巢原理,一定有两个数的余数相同,如果余数出现0,自然就是n的倍数。也就是说,n个数中一定存在一些数的和是n的倍数。本题的思路是从第一个数开始一次求得前 i(i <= N)项的和关于N的余数sum,并依次记录相应余数的存在状态,如果sum == 0;则从第一项到第i项的和即满足题意。如果求得的 sum 在前边已经出现过,假设在第j(j
#include
#define MAX 16000int s[MAX],sum[MAX],has[MAX];int main(void){ int n,i,j; while(scanf("%d",&n)!=EOF) { int l,r; memset(has,-1,sizeof(has)); memset(sum,0,sizeof(sum)); has[0]=0; for(i=1;i<=n;i++) scanf("%d",&s[i]); for(i=1;i<=n;i++){ sum[i]=(sum[i-1]+s[i])%n; if(has[sum[i]]==-1) has[sum[i]]=i; else{ l=has[sum[i]]; r=i; } } printf("%d\n",r-l); for(i=l+1;i<=r;i++){ printf("%d\n",s[i]); } } return 0;}

转载于:https://www.cnblogs.com/woshijishu3/p/3866659.html

你可能感兴趣的文章
20160115小记
查看>>
hdu 2526
查看>>
那些常用的git工具
查看>>
join()方法之我见
查看>>
希尔shell排序——java实现
查看>>
webService学习1----WSDL
查看>>
评估分类器性能的度量,像混淆矩阵、ROC、AUC等
查看>>
Scala - Spark Lambda“goesto“ => 分析
查看>>
mysql TIMESTAMPDIFF
查看>>
win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel+mysql开发环境
查看>>
通过cmd查看环境变量名对应的环境变量值
查看>>
Python: 利用Python进行数据分析 学习记录
查看>>
python 零基础学习之路-06 常用模块
查看>>
[Lintcode]165. Merge Two Sorted Lists/[Leetcode]21. Merge Two Sorted Lists
查看>>
【ASP.NET 进阶】TreeView控件学习
查看>>
linux nfs配置
查看>>
【.Net Core】Assets file project.assets.json not found. Run a NuGet package restore
查看>>
mybatis框架
查看>>
编程语言
查看>>
自己的ORMapping
查看>>