寻找倍数<set集合使用>
2017-07-15 17:02
381 查看
Problem B: 寻找倍数
Time Limit: 1 Sec Memory Limit:128 MB
Submit: 162 Solved: 96
[Submit][Status][Web
Board]
Description
给出n(n<=10000)个正整数,每个数xi<=15000.可以在这个n个数中选择一些数出来,至少选择一个,是否存在一种选择方案使得选择出来的数的和是n的整数倍
Input
第一行一个T(T<=500),第二行一个数n,接下来n个正整数Output
Case #x: y,其中x是测试编号,从1开始,y表示答案,如果存在y为Yes,否则为NoSample Input
25 1 2 3 4 121 2Sample Output
Case #1: YesCase #2: YesHINT
#include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #include<set> #include<cstring> #include<string> #include<iostream> #include<cmath> #include<map> #include<vector> using namespace std; int main() { int t; scanf("%d",&t); set<int> a; int cou=1; while(t--){ int flag=0; a.clear(); int n; scanf("%d",&n); for(int i=0;i<n;i++){ int s; scanf("%d",&s); a.insert(s); if(s%n==0){ flag=1; } if(!flag){ set<int>::iterator j=a.begin(); for(;j!=a.end();j++) { if((*j+s)%n==0) { flag=1; break; } a.insert((*j+s)%n); } } } if(flag==1) printf("Case #%d: Yes\n",cou++); else printf("Case #%d: No\n",cou++); } return 0; }
思路比较简单,输入一个数后判断能否整除,不能的话加上之前存在集合里面的值,再判断能否整除,还是不能整除的话,就把n对其的余数存在集合里面,一直遍历到最后一个元素输入完
相关文章推荐
- 使用HashSet<>去除重复元素的集合
- 使用<s:iterator>标签来循环遍历某一实体下的set集合数据
- 使用HashSet<>去除重复元素的集合
- 使用HashSet<String>将map集合去重
- Java中使用SQL标签库<sql:setDataSource />设置数据源
- 并查集 删除节点 求集合的个数<set> hdu 2473
- 深入学习java集合:TreeSet<E>实现
- 黑马程序员——>第十五天<集合框架(TreeSet-泛型)>
- [C#基础教程]C#泛型集合—Dictionary<K,V>使用技巧
- C#:泛型集合—List<T>使用技巧
- Java集合HashSet<T>,TreeSet<T>的使用
- C#泛型集合—Dictionary<K,V>使用技巧
- 再谈使用Emit把Datatable转换为对象集合(List<T>)
- 使用UIBezierPath绘图控制台<Eorro>CGContextSaveGState: invalid context 0x0,CGContextSetLineWidth: invalid co
- 返回集合使用IEnumerable<>还是IList<>
- Android中的Animation <set>使用
- Java基础<十一>--->集合之List、Set
- Java集合转换【List<-->数组、List<-->Set、数组<-->Set、Map-->Set、Map-->List】
- 集合中Predicate<T>委托的使用
- <Android>setOnClickListener使用无效,报错null pointer