比赛 NOIP2023模拟赛4 评测结果 AAAAAAAAAA
题目名称 最大公约数 最终得分 100
用户昵称 元始天尊 运行时间 1.345 s
代码语言 C++ 内存使用 7.64 MiB
提交时间 2023-11-16 09:32:56
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
bool paixu(int a,int b)
{
    return a>b? true:false;
}
int num[N],Max=0,ans=0x3f;//表示因数有n的个数;
void fenjie(int x)
{
    for(int i=1;i<=sqrt(x);i++)
    {
        if(x%i==0) 
        {
            num[i]++;
            if(i!=sqrt(x))
            {
                num[x/i]++;
            }
        }
    }
 } 
int main()
{
    freopen("gcd.in","r",stdin);
    freopen("gcd.out","w",stdout);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        Max=max(x,Max);
        fenjie(x);
    }
    bool found=false;
    int p;
    for(int i=Max;i>=1;i--)
    {
        if(num[i]==n)
        {
            found=true;
            p=i;
            break;
        }
    }
    sort(num+p+1,num+Max+1,paixu);
    cout<<n-num[p+1];
    return 0;
}