A. English Problem
题目解释
既然是英文题那就简单解释一下题意好了。
给你两个整数n和k,你要构造一个长度为N且每个数互不相同的数组,满足的条件如下:
- 所有元素的最小素因子的异或是一个小于等于k的素数
思路
难度定义是cf div2的A题(或者不超过B)
偶数的最小素因子一定是2
- 对于是奇数的情况,可以构造个偶数,他们的最小素因子的异或一定为
- 对于是偶数的情况,可以先构造个偶数(异或结果为),再构造两个异或起来是的素数即可,如、
(所以对于正解来说k是没用的,题目只是限制大家的构造尽可能小)
std
#include <cstdio>
#include <iostream>
using namespace std;
const int MOD = 1e9 + 7;
int n, k;
int main() {
int T = 1; cin >> T;
while (T--) {
cin >> n >> k;
if (n & 1) {
for (int i = 1; i <= n; i++) {
cout << 2 * i << " ";
}
} else {
for (int i = 1; i <= n - 2; i++) {
cout << 2 * i << " ";
}
cout << "5 7 ";
}
cout << endl;
}
return 0;
}