列表

详情


NC232576. 构造题

描述

给定一个正整数序列 ,你需要构造一个数列 b ,满足对于任何 i,你需要最大化 ,即 b 中所有数的最大公约数。

输入描述

第一行一个正整数

第二行 n 个正整数

输出描述

一行一个正整数,表示答案。

示例1

输入:

5
2 9 6 11 3

输出:

3

说明:

构造 b_1=3,b_2=9,b_3=6,b_4=12,b_5=3 即可达到最大值。

示例2

输入:

7
11 45 14 19 19 8 10

输出:

2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 134ms, 内存消耗: 528K, 提交时间: 2022-02-18 19:03:05

#include<bits/stdc++.h>
using namespace std;
int n,x,t,y;
int main(){
	scanf("%d",&n);
	scanf("%d",&x);
	y=x+1;
	for (int i=1;i<n;i++){
		scanf("%d",&t);
		x=max(__gcd(x,t),__gcd(x,t+1));
		y=max(__gcd(y,t),__gcd(y,t+1));
	}
	printf("%d\n",max(x,y));
}

Python3 解法, 执行用时: 545ms, 内存消耗: 122444K, 提交时间: 2022-02-26 22:00:20

n=int(input())
list_in=list(map(int,input().split()))
min_=min(list_in)+1
for i in range(min_,0,-1):
    flag=1
    for j in list_in:
        if j%i!=0 and (j+1)%i!=0:
            flag=0
            break
    if flag:
        print(i)
        break

上一题