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;
}