rt,不知道哪里复杂度写假了呢(悬 1 关)
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T; cin >> T;
while(T--) {
int n,p; cin >> n >> p;
if(p == 1) {
for(int i = 1;i <= n;i++) cout << i << ' ';
cout << "\n";
}
else if(p % 2 == 0) {
//此时一定会多出来一个 p/2
int zu = n / p,mo = n % p;
for(int i = 1;i * 2 < p-1;i++) {
int first = i,second = p-i;
for(int j = 1;j <= zu;j++) {
cout << (j-1)*p+first << ' ' << (j-1)*p+second << ' ';
}
if(mo >= second) {
cout << zu*p + first << ' ' << zu*p+second << ' ';
}
else if(mo < second && mo >= first) {
cout << zu*p + first << ' ';
}
}
for(int i = 1;i <= zu;i++) {
cout << (i-1)*p + p / 2 << ' ';
}
if(mo >= p / 2) {
cout << zu*p+p/2 << ' ';
}
for(int i = 1;i <= zu;i++) {
cout << i*p << ' ';
}
cout << "\n";
}
else {
int zu = n / p,mo = n % p;
for(int i = 1;i * 2 <= p-1;i++) {
int first = i,second = p-i;
for(int j = 1;j <= zu;j++) {
cout << (j-1)*p+first << ' ' << (j-1)*p+second << ' ';
}
if(mo >= second) {
cout << zu*p + first << ' ' << zu*p+second << ' ';
}
else if(mo < second && mo >= first) {
cout << zu*p + first << ' ';
}
}
for(int i = 1;i <= zu;i++) {
cout << i*p << ' ';
}
cout << "\n";
}
}
return 0;
}
/fn