Number-1.docVIP

  • 11
  • 0
  • 约1.02千字
  • 约 2页
  • 2017-04-27 发布于河南
  • 举报
Number-1

N倍数问题 Timelimit :5S Name :Nnumber 给定n(1=n=1000000)个正整数,这n个数可以相同。 从这n个数中选出若干个,使这些数的和为n的倍数。如果找不出一个符合条件的方案,则输出0。 输入 输入文件第一行为一个正整数n。第2行为n个不超过长整范围的正整数 输出 输出你选出来的正整数或0 样例输入 3 1 1 1 样例输出 1 1 1 解 题 报 告 要是不知道算法,看了题目肯定会一片茫然。数据这么大,连把N个数保存下来都不可能,怎么去求这个N倍数?而且还要输出结果,还要判无解?或许有些人认为本题必须得用FP来做。 其实本题不可能出现无解的情况,讲输出0只不过是带个笼子罢了。:) 我们可以通过抽屉原理来证明。设Sum[I]表示前I个数的和,那么Sum[1]到Sum[N]中,如果存在Sum[I]是N的倍数,则1到I的和为一个可行解;如果不存在N的???数,那么Sum[1]到Sum[N]这N个数除以N的余数只有可能为1到N-1这N-1个数,所以必定存在Sum[I]、Sum[J](假定IJ),它们除以N的余数相同,那么数I+1到J必定为N的一个可行解。 所以说,我们要找的只是某

文档评论(0)

1亿VIP精品文档

相关文档