题目大意就是给你由X,Y两个数的所有因子(包括一和数本身)组成的序列,然后通过这个序列找出这两个数。
由此可见,序列里最大的数一定是X或Y其中的一个,然后我们的任务就是找另一个了,我找的是剩下的因子里不能被已找到的那个数整除的数中最大的数,且没有和这个数相同的数。
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n,a[100005],b,c,d[10005];
scanf("%d",&n);
for(int i = 0;i < n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
b = a[n-1];
c = 0;
for(int i = 0;i < n; i++)
{
if(b % a[i] == 0 && a[i] != a[i+1])
d[i] = 1;
}
for(int i = n - 2;i >= 0; i--)
{
if(!d[i])
{
c = a[i];
break;
}
}
printf("%d %d",b,c);
return 0;
}
标签:Integers,int,1108B,scanf,Two,++,因子,序列,include From: https://blog.51cto.com/u_16131191/6356101