当前位置: 首页 > news >正文

N的倍数

题目来源:  Ural 1302
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数。
例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数。
 
Input
第1行:1个数N,N为数组的长度,同时也是要求的倍数。(2 <= N <= 50000)
第2 - N + 1行:数组A的元素。(0 < A[i] <= 10^9)
Output
如果没有符合条件的组合,输出No Solution。
第1行:1个数S表示你所选择的数的数量。
第2 - S + 1行:每行1个数,对应你所选择的数。
Input示例
8
2
5
6
3
18
7
11
19
Output示例
2
2
6
李陶冶  (题目提供者)
 
C++的运行时限为:1000 ms ,空间限制为:131072 KB
根据 抽屉原理,必有答案。
可以想象,把每个数都都mod一下n,数列中只会存在0~n-1的数。
可以想象,这些数必然能够组成n的倍数。
做法是弄一个前缀和,
如果h[i]==0,输出s[1]~s[i];
如果h[l]+h[r]==0,输出s[l+1]~s[r];
代码实现:
 1 #include<cstdio>
 2 int n;
 3 int s[50010],h[50010];
 4 int v[50010];
 5 int main(){
 6     scanf("%d",&n);
 7     for(int i=1;i<=n;i++){
 8         scanf("%d",&s[i]);
 9         h[i]=(s[i]+h[i-1])%n;
10         if(!h[i]){
11             printf("%d\n",i);
12             for(int j=1;j<=i;j++)
13             printf("%d\n",s[j]);
14             return 0;
15         }
16         if(v[h[i]]){
17             printf("%d\n",i-v[h[i]]);
18             for(int j=v[h[i]]+1;j<=i;j++)
19             printf("%d\n",s[j]);
20             return 0;
21         }
22         v[h[i]]=i;
23     }
24 }

答案好像只要可以就行,好强的数据,好强的评测机。

题目来源:51Nod

转载于:https://www.cnblogs.com/J-william/p/6369021.html

相关文章:

  • shell脚本,根据字符串获取行号的
  • Linux script(录制) 命令
  • Golang升级到1.7后,之前正确的函数出现错误,分析原因及解决办法
  • 更新image的方法
  • Docker学习笔记 - Docker容器与外部网络的连接
  • proxy是什么
  • RIP路由配置实例V2
  • 前端开源项目周报0207
  • Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
  • 为你的网络传输加把锁(OpenSSL)
  • Java之戳中痛点 - (2)取余用偶判断,不要用奇判断
  • 如何才能弥补实际工作经验不足,而获得一份好工作?
  • CentOS 7 网卡命名修改为eth0格式
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • python学习笔记 - ThreadLocal
  • ➹使用webpack配置多页面应用(MPA)
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • golang 发送GET和POST示例
  • java 多线程基础, 我觉得还是有必要看看的
  • Js基础——数据类型之Null和Undefined
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • node 版本过低
  • Python学习之路13-记分
  • Redux 中间件分析
  • storm drpc实例
  • Travix是如何部署应用程序到Kubernetes上的
  • vue数据传递--我有特殊的实现技巧
  • 爱情 北京女病人
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 将回调地狱按在地上摩擦的Promise
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 算法之不定期更新(一)(2018-04-12)
  • 数据可视化之下发图实践
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​插件化DPI在商用WIFI中的价值
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (NSDate) 时间 (time )比较
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (篇九)MySQL常用内置函数
  • (四)模仿学习-完成后台管理页面查询
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Linux下编译安装log4cxx
  • (转)shell调试方法
  • (转)重识new
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET 药厂业务系统 CPU爆高分析
  • /etc/motd and /etc/issue