import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
// todo
}
}
NC240151. 最大gcd
描述
输入描述
第一行一个整数。
第二行个正整数
,表示序列
。
输出描述
一个整数,表示这个序列的最大。
示例1
输入:
3 1 2 2
输出:
2
说明:
C 解法, 执行用时: 169ms, 内存消耗: 4248K, 提交时间: 2022-09-17 09:32:30
#include <stdio.h>int a[1000005];int main(){int n,i,max=0,ans,j,l;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&l);a[l]++;if(l>max) max=l;}for(i=2;i<=max;i++){int c=0;for(j=i;j<=max;j+=i){c+=a[j];}if(c>=2) ans=i;}printf("%d\n",ans);return 0;}
C++(clang++ 11.0.1) 解法, 执行用时: 318ms, 内存消耗: 5076K, 提交时间: 2022-09-20 21:04:10
#include<bits/stdc++.h>using namespace std;int c[1000005];int main(){int n;cin>>n;for(int i=1;i<=n;i++){int tp;cin>>tp;c[tp]++;}int res;for(int i=1;i<=1e6;i++){int cnt=0;for(int j=i;j<=1e6;j+=i){cnt+=c[j];}if(cnt>=2)res=i;}cout<<res;}
pypy3 解法, 执行用时: 724ms, 内存消耗: 124092K, 提交时间: 2022-09-19 20:46:31
n=int(input())arr=[0]*(10**6+9)a=list(map(int,input().split(' ')))for i in range(n):arr[a[i]]+=1x=max(a)ans=0for i in range(1,x+1):cnt=0for j in range(i,x+1,i):cnt+=arr[j]if cnt>1:ans=iprint(ans)
C++(g++ 7.5.0) 解法, 执行用时: 321ms, 内存消耗: 11116K, 提交时间: 2022-09-25 22:27:55
#include<iostream>using namespace std;enum{N=1000001};int t[N],i,j,c,a;int main(){for(cin>>i;cin>>i;)++t[i];for(i=0;++i<N;c>1&&(a=i))for(c=j=0;(j+=i)<N;)c+=t[j];cout<<a;}