URAL 1032 Find a Multiple 鸽巢原理
来源:互联网 发布:数独软件 编辑:程序博客网 时间:2024/06/02 16:12
题目大意:
给出N个数,要求从这N个数中选出一些数,使得这些数的和是N的倍数,如果能够找到这样的组合,则输出选出的数的个数和这些数,否则输出0
大致思路:
首先对于N个数,假设前 i 项的和是 S[i], 则S[i] % N 将会对应的有N个值,其中,如果S[i] % N互不相同,则必定是 0,1,2,3,4,5...,N - 1共N个数,这样的话,S[i] % N的那个前i 项便满足题目要求
而如果S[i] % N 不是互不相同,那么,对于 S[i] % N == S[j] % N,必有 (S[i] - S[j]) % N == 0,这样,从第i + 1项到第 j 项就满足题目要求,直接输出即可
如此一来,一定存在满足条件的组合,这也是鸽巢原理的一个妙用
代码如下:
Result : Accepted Memory : 272 KB Time : 62 ms
/* * Author: Gatevin * Created Time: 2014/7/9 23:30:00 * File Name: test.cpp */#include<iostream>#include<sstream>#include<fstream>#include<vector>#include<list>#include<deque>#include<queue>#include<stack>#include<map>#include<set>#include<bitset>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<cctype>#include<cmath>#include<ctime>#include<iomanip>using namespace std;const double eps(1e-8);typedef long long lint;int N;int num[10010];int mod[10010];int main(){ scanf("%d",&N); mod[0] = 0; for(int i = 1; i <= N; i++) { scanf("%d",&num[i]); mod[i] = (num[i] + mod[i - 1]) % N; } for(int i = 0; i <= N; i++) { for(int j = i + 1; j <= N; j++) { if(mod[i] == mod[j]) { cout<<j - i<<endl; for(int k = i + 1; k <= j; k++) { cout<<num[k]<<endl; } return 0; } } } return 0;}
0 0
- URAL 1032 Find a Multiple 鸽巢原理
- ural 1032 Find a Multiple (鸽巢原理)
- ural 1032 Find a Multiple
- poj2356 Find a multiple(鸽巢原理)
- poj2356 Find a multiple(鸽巢原理)
- POJ2356 Find a multiple【鸽巢原理】
- Find a multiple (鸽巢原理)
- 【POJ2356】Find a multiple(鸽巢原理)
- URAL 1032. Find a Multiple
- POJ2356 Find a multiple 抽屉原理(鸽巢原理)
- POJ 2356 Find a multiple 鸽巢原理
- POJ 2356 Find a multiple 鸽巢原理
- pku 2356 Find a multiple (鸽巢原理)
- POJ:2356 Find a multiple(鸽巢原理)
- POJ 2356 Find a multiple 鸽巢原理
- POJ 2356 Find a multiple 鸽巢原理
- poj 2356 Find a multiple(组合数学:鸽巢原理)
- poj 2356 Find a multiple[鸽巢原理]
- 提高php执行效率渍
- 二分图最大匹配 -- 匈牙利算法
- 正则表达式
- Java线程池使用说明
- Java反射机制
- URAL 1032 Find a Multiple 鸽巢原理
- Hash Table - Reviews
- Linux网络配置
- File 类
- 黑马程序员--学习日记 (四)集合
- Linux文件服务器
- JAVA并发编程——守护线程(Daemon Thread)
- Html、CSS、DOM、JavaScript
- 软件测试技术---测试的基本概念