Codeforces Round #681 A

Codeforces Round #681 A

大意

t组数据,每组给定n。 \(t \le 100 ,n \le 100\)

从1到4n之间选择n个数,要求任意两个数不能是倍数关系或者互质。

保证有解。

思路

题目中给了两个条件,先考虑满足其中一个以化简题目。

假设 \(\{A_{n}\}\) 为已选定的满足不互质条件的n个数的集,显然有\(\gcd(A_{1},...,A_{n}) = c\) \((c\neq1)\)

考虑新集\(\{\dfrac{A_{n}}{c} \}\),若其满足任意两个数不成倍数关系,则原集中的元素即为一组可行解。

不难发现选定了一个数之后,其所有的倍数无法再次选择,所以考虑贪心从大往小选。

显然当\(c=2\)时最优。

\(\{4n,4n-2,...,2n+2\}\)

代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;

#define ll long long
#define ull unsigned long long
#define cint const int&
#define Pi acos(-1)

int t;
int n;

int main() {
    cin >> t;
    while(t--) {
        cin >> n;
        for(int i=2*n; i>n; i--)
            cout << i*2 << ' ';
        cout << endl;
    }
    return 0;
}
posted @ 2020-11-06 21:32  ullio  阅读(57)  评论(0编辑  收藏  举报