第十届省赛-C-最小秘钥
来源:互联网 发布:mac恢复出厂设置 编辑:程序博客网 时间:2024/04/29 10:57
问题 C: 最小秘钥
时间限制: 1 Sec 内存限制: 128 MB
题目描述
在中国近代史上,暂编* * 军绝对是一支能打硬仗,大名鼎鼎的行动部队。“一二八”上海抗战,暂编 * * 军就曾打得小日本四易主帅。
- 月 * * 号,暂编 * * * 军计划组成一个行动大队,派出N名队员潜伏在* * * 地,发动一次大规模的巷战行动。每名队员有自己的代号Ai,为了更好的配合作战,他们需要获得一个密钥Key, 然后各自迅速移动到Ai MOD Key位置,* 时刻一起开战。
作战方案已经定好,你能帮*行动大队快速找个满足条件的最小密钥Key吗?
MOD表示取模运算,要求不能有多名队员待在同一个位置。
输入
第一行: T 表示以下有T组测试数据 ( 1≤T ≤5 )
对每组数据,
第一行:N 表示行动人员数 (1<=N<=3000)
接下来一行有N个整数,分别表示每个队员的代号Ai (1<=Ai<=20000)
输出
对每组测试数据,输出占一行,一个整数 Key.
样例输入
231 2 354 6 9 10 13
样例输出
38
分析:题目意思就是除以key取余数,使所有余数都不相等,要保证满足条件最小的key,用一个bool的数组下标来代表余数,进行判断余数是否重复。
代码:
#include<bits/stdc++.h>using namespace std;int a[3010];bool b[20010];bool ok(int x,int y)//判断余数是否重复{ if(b[a[y]%x]) { return false; } else return true;}int main(){ int m; cin>>m; while(m--) { int n,i,j; cin>>n; for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); // cout<<"----------"<<a[n-1]<<endl; for(i=1;i<=a[n-1];i++) { //cout<<i<<endl; memset(b,false,sizeof(b)); for(j=0;j<n;j++) { if(ok(i,j))如果不重复赋值true { b[a[j]%i]=true; } else { break; } } if(j==n) break; } cout<<i<<endl; } return 0;}
阅读全文
1 0
- 第十届省赛-C-最小秘钥
- 第十届ACM省赛-C 最小秘钥
- 河南省第十届ACM题解 C 最小秘钥
- 问题 C: 最小秘钥
- 河南省第十届ACM省赛题目:问题 C: 最小秘钥
- 省赛 最小秘钥
- 2017年河南省ACM省赛 Problem C: 最小秘钥
- 河南省第十届acm省赛-最小秘钥——个人c++解
- 我的小秘
- 时尚生活小秘方
- 生活实用小秘方
- C 第十一次作业
- C 第十一次作业
- C语言第十天
- C语言第十课
- C第十天
- C第十一天
- c/c++第十天
- Linux下入门shell编程
- 第11课: 彻底解密WordCount运行原理
- 第十届省赛-A-谍报分析
- 了解这23种设计模式
- 布局优化方案
- 第十届省赛-C-最小秘钥
- 九九乘法表,java
- 简单工厂模式-创建型模式
- Android抽象布局——include、merge 、ViewStub
- 临摹帖(zDrawHelp 画像素图的辅助工具)
- SAPUI5 (38)
- 读Zepto源码之集合操作
- 新的开始
- Github全面详解-22为开源项目提bug