比赛 NOIP2023模拟赛4 评测结果 AAAAATTTTT
题目名称 最大公约数 最终得分 50
用户昵称 黄天乐 运行时间 5.008 s
代码语言 C++ 内存使用 6.68 MiB
提交时间 2023-11-16 10:30:02
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
const int MAXN=1e6;
int n,minx=1e9,maxx=-1e9;
int k,cnt,ans=1e9;
int a[MAXN];
bool flag;
int main(){
    freopen("gcd.in","r",stdin);
    freopen("gcd.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        minx=min(minx,a[i]);
        maxx=max(maxx,a[i]);
    }
    k=1;
    for(int i=minx;i>=1;i--){
        flag=true;
        for(int j=1;j<=n;j++){
            if((a[j]%i)!=0){
                flag=false;
                break;
            }
        }
        if(flag){
            k=i;
            break;
        }
    }
    for(int i=1;i<=n;i++){
        a[i]/=k;
    }
    for(int i=2;i<=(maxx/k);i++){
        int cnt=0;
        for(int j=1;j<=n;j++){
            if(a[j]%i!=0){
                cnt++;
            }
        }
        ans=min(ans,cnt);
    }
    cout<<ans<<endl;
    return 0;
}