51nod-1103 N的倍数(抽屉原理)
2016-09-04 16:12
197 查看
原题链接
1103 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
Output
Input示例
Output示例
遍历数组num中的每一个数,求前缀和p,
1若p % n == 0则直接输出组成前缀和的这些元素.
2.假如没有出现p % n == 0, 因为有n个元素,p % n 取值范围为1..n-1所有必有两个前缀和pi % n == pj % n(j > i)那么num[i+1] + ..num[j]必为n的倍数.
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int num[50005], vis[50005];
int main(){
// freopen("in.txt", "r", stdin);
int n;
ll p = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", num+i);
(p += num[i]) %= n;
if(p == 0){
printf("%d\n", i+1);
for(int j = 0; j <= i; j++){
printf("%d\n", num[j]);
}
return 0;
}
if(vis[p]){
printf("%d\n", i - vis[p]);
for(int j = vis[p]+1; j <= i; j++)
printf("%d\n", num[j]);
return 0;
}
vis[p] = i;
}
puts("No Solution");
return 0;
}
1103 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
遍历数组num中的每一个数,求前缀和p,
1若p % n == 0则直接输出组成前缀和的这些元素.
2.假如没有出现p % n == 0, 因为有n个元素,p % n 取值范围为1..n-1所有必有两个前缀和pi % n == pj % n(j > i)那么num[i+1] + ..num[j]必为n的倍数.
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int num[50005], vis[50005];
int main(){
// freopen("in.txt", "r", stdin);
int n;
ll p = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", num+i);
(p += num[i]) %= n;
if(p == 0){
printf("%d\n", i+1);
for(int j = 0; j <= i; j++){
printf("%d\n", num[j]);
}
return 0;
}
if(vis[p]){
printf("%d\n", i - vis[p]);
for(int j = vis[p]+1; j <= i; j++)
printf("%d\n", num[j]);
return 0;
}
vis[p] = i;
}
puts("No Solution");
return 0;
}
相关文章推荐
- CSS3:实现图片轮播
- 《机器学习》(西瓜书) 随笔
- 《PCL点云库学习&VS2010(X64)》Part 20 PCL1.72(VTK6.2.0)PCL控制台程序线程
- 转发和重定向
- HDU 5831 Rikka with Parenthesis II
- SparkSQL UDF 两种方式:udf() 和 register()
- 转发和重定向
- csdn如何高亮显示代码和插入图片
- Linux 编译器
- html盒模型margin、padding、border使用
- 自己动手写最简单的bootloader
- iOS应用之微信支付集(1)
- HDU 5867 Water problem 题如其名
- 第五周作业
- 4-12 判断奇偶性 (10分)
- 模式的秘密——责任链模式
- mvn配置
- LeetCode总结
- [ASP.NET MVC 小牛之路]18 - Web API
- JavaWeb(3)——动态Web项目打包导出与部署