第十屆河南省acm省賽 最小祕鑰
阿新 • • 發佈:2019-02-07
問題 C: 最小祕鑰
時間限制: 1 Sec 記憶體限制: 128 MB提交: 35 解決: 22
[提交][狀態][討論版]
題目描述
在中國近代史上,暫編***軍絕對是一支能打硬仗,大名鼎鼎的行動部隊。“一二八”上海抗戰,暫編***軍就曾打得小日本四易主帥。
*月**號,暫編***軍計劃組成一個行動大隊,派出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
樣例輸出
3
8
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int t,n,a1[3003]={0},b1[20013]={0},k1=0; cin>>t; while(t--) { memset(a1,0,sizeof(a1)); memset(b1,0,sizeof(b1)); cin>>n; for(int i=0;i<n;i++){ cin>>a1[i]; } for(int j=2;j<20000;j++){ k1=0; memset(b1,0,sizeof(b1)); for(int i=0;i<n;i++){ if(b1[a1[i]%j]==0){ b1[a1[i]%j]=1; }else{ k1=1; break; } } if(k1==0){k1=j;break;} } cout<<k1<<endl; } return 0; }