NC230335. 彼得和他的王国 2
描述
注意:这和彼得和他的王国 1 有两点不同:1. 这里的彼得已经不可十世了,2. 因为不可十世,所以他的城市人口的数据范围较大
不可十世的彼得建立了彼氏王国,他的王国里有 个城市。因为不可十世,所以彼得感到无聊,他开始转头研究起了人口统计和玄学。
根据人口统计学,彼得统计出了他的王国里每个城市中的人口数,如果我们把 个城市从 到 依次编号,那么第 个城市里有 个人。
根据玄学,彼得认为数论中的[公因数]具有着神秘的力量。他开始细心研究任意两个城市的人口的对应着的公因数。
比如若彼得的城市对应的人口构成了一个序列:,那么我们有:
输入描述
第一行是两个整数,分别代表着 和 ,其中 是彼得国王能处理的最大的数字,而 是彼得王国的城市的数目。
第二行有 个整数,编号第 个一直到第 个,第 个数字代表了 ,即第 个城市的人口数量。
输出描述
输出国王认为的最大的公因数。
示例1
输入:
5 3 49 24 42
输出:
3
示例2
输入:
11 2 9 27
输出:
9
C++ 解法, 执行用时: 4ms, 内存消耗: 552K, 提交时间: 2022-02-08 11:05:31
#include<bits/stdc++.h> using namespace std; long long bns[110],result=0; int main() { long long sum1,sum2; cin>>sum1>>sum2; for(long long n=1;n<=sum2;n++) cin>>bns[n]; for(long long n=1;n<sum2;n++) for(long long m=n+1;m<=sum2;m++) { long long val=__gcd(bns[n],bns[m]); if(val>sum1) { for(long long i=sum1;i>=1;i--) { if(bns[n]%i==0&&bns[m]%i==0) { result=max(i,result); break; } } } else result=max(result,val); } cout<<result<<endl; return 0; }
pypy3 解法, 执行用时: 656ms, 内存消耗: 26244K, 提交时间: 2021-12-13 23:14:18
l,n=list(map(int,input().split(" "))) lst=list(map(int,input().split(" "))) lst1=[] for i in lst: j=1 while j*j<=i: if i%j==0 and j<=l: lst1.append(j) if i//j<=l and j*j!=i: lst1.append(i//j) j+=1 lst2=list(set(lst1)) lst2.sort(reverse=True) for i in lst2: if lst1.count(i)>=2: print(i) break