1004 三途川畔

这是一个构造题, 那我们就考虑一下特殊情况, 把前面n-2个元素全部设为1,看看只用最后两个元素能不能构造出符合题意的元素, 可以得到n-2+a+b+k=a*b,令a=2, 解得b=n+k, 构造成功。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef vector<vector<ll> > mat;
const ll N = 2e5 + 5, INF = 1e9, MOD = 1e9 + 7, B = 10;

void solve() {
   ll n, k;
   cin >> n >> k;
   ll a = 2, b = n + k;
   for (ll i = 1; i <= n - 2; ++i) {
       cout << 1 << ' ';
   }
   cout << a << ' ' << b << '\n';

}

int main() {
   ios::sync_with_stdio(0), cout.tie(0), cin.tie(0);
   ll tt; cin >> tt; while(tt--)
   solve();
   return 0;
}