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 eq1))
考虑新集({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;
}