ACdream OJ 1153 (k-GCD)
題目連結:
http://115.28.76.232/problem?pid=1153
題意:
從給定的n個數中取出k個數,使得他們的最大公約數最大,求這個最大的公約數
分析:
暴力分解不可取,我們可以得到最大公約數肯定在[1,mmax]之間(mmax為其中最大的元素),由於mmax不大,
因此我們可以從大到小列舉公約數,然後統計它的倍數的個數是不是大於等於k,如果是的話那麼這個數必然是最大的。
程式碼如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 10010;
int a[maxn];
int main()
{
int n,k,t,x;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&k);
memset(a,0,sizeof(a));
int mmax = 0;
for(int i=0;i<n;i++){
scanf("%d",&x);
a[x]++;
if( x > mmax) mmax = x;
}
int ans;
bool f=0;
for(int i=mmax;i>=1;i--){
int cnt=0;
for(int j=i;j<=mmax;j+=i){
cnt += a[j];
if(cnt>=k){
ans = i;
f=1;
break;
}
}
if(f) break;
}
printf("%d\n",ans);
}
return 0;
}
相關文章
- ACdream oj 1191 Dragon Maze(手速賽 A)Go
- OJ搭建
- ACdream1139 Sum(推公式+逆元求解)公式
- Acdream 1205 Disappeared Block(模擬)APPBloC
- 【故障處理】CRS-1153錯誤處理
- acdream群賽(4)Bad Horse(種類並查集)並查集
- Vue + Koa 搭建 ACM OJVueACM
- 分段函式 (sdut oj)函式
- 計算題 (sdut oj)
- 信奧OJ的搭建
- 畢業旅行 oj題
- 個人OJ免費搭建
- 【DataGuarad】ORA-1153 trying to turn on Flashback for Physical Standby DatabaseDatabase
- 力扣oj-字串相乘力扣字串
- OJ題之氣泡排序排序
- Hydro OJ搭建全過程
- ACdream 1112 Alice and Bob (博弈&&素數篩選優化)優化
- 二叉排序樹 oj 2482排序
- 計算組合數 (sdut oj)
- OJ刷題之《複製字串》字串
- YTU-OJ-多重繼承繼承
- LeetCode OJ : 1 Two SumLeetCode
- 各大OJ的外掛(篡改猴)
- 64.《oj-圖緒論》
- 百練OJ:2678:基因檢測
- OJ lintcode 搜尋插入位置
- 東華OJ 陣列競賽 分糖果陣列
- C語言訓練之杭電OJC語言
- SDUST OJ Problem G 動態的字串排序字串排序
- C語言實驗——素數 (sdut oj)C語言
- A+B for Input-Output Practice (IV) (sdut oj)
- C語言實驗——最值 (sdut oj)C語言
- 銀行業務佇列 oj150行業佇列
- LeetCode OJ : 6 ZigZag ConversionLeetCode
- YTU-OJ-繼承與組合繼承
- LeetCode OJ : 2 Add Two NumbersLeetCode
- 杭電OJ 2032楊輝三角
- 【洛谷OJ】【JAVA】P1036 選數Java