zoukankan      html  css  js  c++  java
  • 最大公约数(Max Gcd)

    最大公约数

    今天是国庆节, 小(Z)为了给祖国庆祝生日拿来了(n)个数字:(a_1,a_2…a_n)
    (max){(gcd(a_i,a_j))} (( i!=j ))

    Input

    第一行一个整数 (n)
    之后一行 (n) 个数, 表示 (a_1,a_2…a_n)

    Output

    输出一个整数表示答案。

    Example

    输入 #1

    (3)
    (4) (3) (6)

    输出 #1

    (3)

    Scoring

    对于 30%的数据, 满足 (n≤1000)
    对于 100%的数据, 满足 (n≤10000)(1≤a_i≤10^6)

    并不是难题...但是为了纪念一下暑期集训第一道一遍AC的题(其实是想摸鱼

    所以就来写题解了

    看完题面:哦哦哦我会了我可以拿三十分快去下一题(bus

    然后努力想了想,辗转相除法咋写来着

    三十分暴力代码——

    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    int a[10005], ans = 1;
    
    int gcd(int a, int b)
    {
    	if(b==0)return a;
    	return gcd(b, a%b);
    }
    
    int main()
    {
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++)
    		scanf("%d", &a[i]);
    	for (int i = 1; i < n; i++)
    		for(int j = i + 1; j <= n; j++)
    			ans = max(ans, gcd(a[i], a[j]));
    	printf("%d", ans);
    	return 0;
    }
    

    然后敲完二三两题的暴力又回来想了想

    对于 100%的数据, 满足 (n≤10000)(1≤a_i≤10^6)

    (1≤a_i≤10^6)

    要素察觉

    然后一通脑内瞎搞把正解写出来了

    详细做法见代码注释

    //:D
    #include<bits/stdc++.h> 
    using namespace std;
    
    int n, maxn = 1;
    int a[10005], f[100005];//f[i]=p 表示在这n个数中,p个数的约数中有i
    
    int main()
    {
    	//freopen("gcd.in", "r", stdin);
    	//freopen("gcd.out", "w", stdout);
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++){
    		scanf("%d",&a[i]);
    		maxn = max(maxn, a[i]);
    		for (int j = 1; j * j <= a[i]; j++)
    			if (a[i] % j == 0){
    				if(j * j != a[i])f[j]++, f[a[i] / j]++;//统计——
    				else f[j]++;
    			}
    	}
    	for (int i = maxn; i >= 1; i--)
    		if (f[i] >= 2){//从大到小枚举到第一个是多个数因数的数(好绕
    			printf("%d", i);
    			return 0;
    		}
    	return 0;
    }
    

    液,做完了

  • 相关阅读:
    [LeetCode] 638. Shopping Offers
    [LeetCode] 1436. Destination City
    [LeetCode] 405. Convert a Number to Hexadecimal
    [LeetCode] 1909. Remove One Element to Make the Array Strictly Increasing
    [LeetCode] 1475. Final Prices With a Special Discount in a Shop
    [LeetCode] 650. 2 Keys Keyboard
    [LeetCode] 1382. Balance a Binary Search Tree
    [LeetCode] 917. Reverse Only Letters
    [LeetCode] 1189. Maximum Number of Balloons
    [LeetCode] 447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/Sheffield/p/13344751.html
Copyright © 2011-2022 走看看