【题解】

先预处理出模N意义下的前缀和sum[i]。

1.如果sum[i]=0,那么1~i的数之和就是N的倍数

2.sum[i]%N总共有0~N-1这N种情况;根据1,如果sum[i]为0则必定有解;如果不存在sum[i]=0,那么根据抽屉原理,有N个前缀和,N-1种情况,那么一定存在sum[i]=sum[j],那么i+1~j的数之和就是N的倍数

由上可知,一定存在一种方案满足取出连续的一些数使得这些数的和是N的倍数

 #include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
int n,a[maxn],sum[maxn],last[maxn];
void read(int &k){
k=; int f=; char c=getchar();
while (c<''||c>'')c=='-'&&(f=-),c=getchar();
while (''<=c&&c<='')k=k*+c-'',c=getchar();
k*=f;
}
int main(){
read(n);
for (int i=;i<=n;i++) read(a[i]),sum[i]=(sum[i-]+a[i])%n;
for (int i=;i<=n;i++){
if (sum[i]==){
printf("%d\n",i);
for (int j=;j<=i;j++) printf("%d\n",a[j]);
return ;
}
else if (last[sum[i]]){
printf("%d\n",i-last[sum[i]]);
for (int j=last[sum[i]]+;j<=i;j++) printf("%d\n",a[j]);
return ;
}
last[sum[i]]=i;
}
}

51nod1103 N的倍数的更多相关文章

  1. [转]倍数提高工作效率的 Android Studio 奇技

    转自:http://android.jobbole.com/81687/ 倍数提高工作效率的 Android Studio 奇技 2015/10/08 · 技术分享 · 4 评论· Android S ...

  2. 51nod 1109 01组成的N的倍数

    用01 组成 N的最小倍数 这个BFS搜索就好. 类似这道:  ZOJ Problem Set - 1530 每次 要么是0 要么是1, 记入余数,和前驱. #include<bits/stdc ...

  3. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  4. Codeforces Round #276 (Div. 1) B. Maximum Value 筛倍数

    B. Maximum Value Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/484/prob ...

  5. Oracle PL/SQL 找出100以内是3和5的倍数的数 循环语句

    循环: loop --执行代码 exit when 表达式;--当表达式为真退出循环.(注意,其编写位置决定循环为先判断还是先执行,相当于java的while或do-while) end loop; ...

  6. 用if else 判断是不是7的倍数等

    static void Main(string[] args)        {            while (true)            {                int b; ...

  7. NYOJ--517--最小公倍数(大数打表)

    最小公倍数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字 ...

  8. 百度之星2017初赛A轮 1001 小C的倍数问题

    小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...

  9. 51nod 1103 N的倍数 思路:抽屉原理+前缀和

    题目: 这是一道很神奇的题目,做法非常巧妙.巧妙在题目要求n个数字,而且正好要求和为n的倍数. 思路:用sum[i]表示前i个数字的和%n.得到sum[ 1-N ]共N个数字. N个数字对N取模,每个 ...

随机推荐

  1. ClipboardEvent.clipboardData

    ClipboardEvent.clipboardData https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent/clipboa ...

  2. BitmapFactory.decodeStream()获取bitmap返回null

    正常的图片缩放代码如: ByteArrayOutputStream baos = new ByteArrayOutputStream(); arg1.compress(Bitmap.CompressF ...

  3. git subtree 拆分split repository

    subtree出现,是为了取代submodule http://wenku.baidu.com/link?url=ola85Z5tIXJpxCjLTk-dcO81ayXLs68_y6dsmXIa0ni ...

  4. 【BeijingWc 2008】 秦腾与教学评估

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1271 [算法] 二分 [代码] #include<bits/stdc++.h& ...

  5. 62. ExtJS + fileuploadfield实现文件上传

    转自:https://www.cnblogs.com/yzuzhang/p/5128174.html 后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMap ...

  6. 当Table中td内容为空时,让它显示边框的办法

    1 在 table的css里面加 border-collapse:collapse; 在 td 的css里面加      empty-cells:show; border-collapse设置或检索表 ...

  7. js获取request参数值(javascript 获取request参数值的方法)

    jsp 中的js,可以用el表达式来提取:var value = "${requestScope.XXX}"; 注:XXX为你的参数名 如:http://localhost:808 ...

  8. E20171014-hm

    Sibling   n. 兄弟,姐妹; [生] 同科,同属; [人] 氏族成员;

  9. github 用户不被识别问题

    期末考完,继续开发. 用过的都知道,直接用的话贡献者上面显示不出自己. 查一下就知道是因为github的识别是靠邮箱设置的.   但是如果频繁创建新仓库,容易忘记设定用户名和邮箱.   突发奇想,发现 ...

  10. js返回上一层

    Javascript 返回上一页 1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). wind ...