zoukankan      html  css  js  c++  java
  • Codeforces-B-Divisors of Two Integers(思维技巧)

    Recently you have received two positive integer numbers xx and yy. You forgot them, but you remembered a shuffled list containing all divisors of xx (including 11 and xx) and all divisors of yy (including 11 and yy). If dd is a divisor of both numbers xx and yy at the same time, there are two occurrences of dd in the list.

    For example, if x=4x=4 and y=6y=6 then the given list can be any permutation of the list [1,2,4,1,2,3,6][1,2,4,1,2,3,6]. Some of the possible lists are: [1,1,2,4,6,3,2][1,1,2,4,6,3,2], [4,6,1,1,2,3,2][4,6,1,1,2,3,2] or [1,6,3,2,4,1,2][1,6,3,2,4,1,2].

    Your problem is to restore suitable positive integer numbers xx and yy that would yield the same list of divisors (possibly in different order).

    It is guaranteed that the answer exists, i.e. the given list of divisors corresponds to some positive integers xx and yy.

    Input

    The first line contains one integer nn (2≤n≤1282≤n≤128) — the number of divisors of xx and yy.

    The second line of the input contains nn integers d1,d2,…,dnd1,d2,…,dn (1≤di≤1041≤di≤104), where didi is either divisor of xx or divisor of yy. If a number is divisor of both numbers xx and yy then there are two copies of this number in the list.

    Output

    Print two positive integer numbers xx and yy — such numbers that merged list of their divisors is the permutation of the given list of integers. It is guaranteed that the answer exists.

    Example

    input

    Copy

    10
    10 2 8 1 2 4 1 20 4 5
    

    output

    Copy

    20 8

    思路:先选出最大的,然后去遍历是他取模为0的并标记一下,其余的存在另一个数组里,在筛选出最大的

    代码:

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    
    using namespace std;
    int a[150];
    int b[150];
    int vis[10005];
    int main()
    {
    	
    	int n;
    	cin>>n;
    	for(int t=0;t<n;t++)
    	{
    		scanf("%d",&a[t]);
    	}
    	sort(a,a+n);
    	int l=a[n-1];
    	int s=0;
    
    	for(int t=0;t<n;t++)
    	{
    		if(l%a[t]==0&&vis[a[t]]==0)
    		{
    			vis[a[t]]=1;
    			continue;
    		}
    		else
    		{
    			b[s++]=a[t];
    		}
    	}
    	sort(b,b+s);
    	cout<<l<<" "<<b[s-1]<<endl;
    	
    	
    	return 0;
    }
  • 相关阅读:
    Bootstrap
    格式化字符串
    闭包函数与装饰器
    正则表达式
    jQuery
    分布式-锁-1.1 多线程锁无法满足的场景
    effective python 读书笔记-第22条: 尽量用辅助类来维护程序的状态,而不要用字典
    effective python 读书笔记:第21条-用只能以关键字形式指定的参数来确保代码明晰
    effective python 读书笔记:第20条-用None和文档字符串来描述具有动态默认值的参数
    git如何将上游(upstream)新建分支(origin没有)导入到origin中?
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781830.html
Copyright © 2011-2022 走看看