A. English Problem

题目解释

既然是英文题那就简单解释一下题意好了。
给你两个整数n和k,你要构造一个长度为N且每个数互不相同的数组,满足的条件如下:

  1. 2ai1062 \leq a_i \leq 10^6
  2. 所有元素的最小素因子的异或是一个小于等于k的素数

思路

难度定义是cf div2的A题(或者不超过B)

偶数的最小素因子一定是2

  1. 对于nn是奇数的情况,可以构造nn个偶数,他们的最小素因子的异或一定为22
  2. 对于nn是偶数的情况,可以先构造n2n-2个偶数(异或结果为00),再构造两个异或起来是22的素数即可,如57=25 \oplus 7 = 21719=217 \oplus 19 = 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;
}