比赛 NOIP2023模拟赛4 评测结果 AAAAAAAAAA
题目名称 最大公约数 最终得分 100
用户昵称 宇战 运行时间 1.356 s
代码语言 C++ 内存使用 6.72 MiB
提交时间 2023-11-16 09:58:09
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,m,s,ans=0x3f3f3f3f;
  4. int gcd(int x,int y){
  5. if(y == 0)return x;
  6. return gcd(y,x%y);
  7. }
  8. int a[1010000],v[1010000];
  9. int main(){
  10. freopen("gcd.in","r",stdin);
  11. freopen("gcd.out","w",stdout);
  12. cin>>n;
  13. for(int i=1;i<=n;i++){
  14. cin>>a[i];
  15. }
  16. s=a[1];
  17. for(int i=1;i<=n;i++){
  18. s=gcd(s,a[i]);
  19. for(int j=1;j<=sqrt(a[i]);j++){
  20. if(a[i]%j==0){
  21. v[j]++;
  22. v[a[i]/j]++;
  23. }
  24. }
  25. if((int)sqrt(a[i])*(int)sqrt(a[i])==a[i]){
  26. v[(int)sqrt(a[i])]--;
  27. }
  28. }
  29. for(int i=s+1;i<=1e6;i++){
  30. ans=min(ans,n-v[i]);
  31. }
  32. cout<<ans;
  33.  
  34. }