fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using int64 = long long;
  4.  
  5. int main(){
  6. ios::sync_with_stdio(false);
  7. cin.tie(nullptr);
  8.  
  9. int T;
  10. cin >> T;
  11. while (T--){
  12. long long N, K;
  13. cin >> N >> K;
  14. vector<long long> A(N+1);
  15.  
  16. if (N == 2){
  17. // base case
  18. A[1] = K + 1;
  19. A[2] = A[1] + K;
  20. }
  21. else if (K <= N - 2){
  22. // 기본 증가 수열 [1, 2, 3, ..., N]
  23. for (int i = 1; i <= N; i++) A[i] = i;
  24. // 뒤에서부터 (N-2-K)번 0 구간을 만든다.
  25. long long diff = (N - 2) - K;
  26. for (int i = N; i >= 2 && diff > 0; i--){
  27. if (A[i] > A[i-1]){
  28. A[i] = A[i-1];
  29. diff--;
  30. }
  31. }
  32. }
  33. else {
  34. // K가 커서 mod합이 부족할 경우
  35. long long base = K - (N - 2);
  36. A[1] = base + 1;
  37. for (int i = 2; i <= N; i++) A[i] = A[i-1] + 1;
  38. }
  39.  
  40. for (int i = 1; i <= N; i++){
  41. cout << A[i] << (i==N?'\n':' ');
  42. }
  43. }
  44. }
Success #stdin #stdout 0.01s 5276KB
stdin
2
5 3
2 3
stdout
1 2 3 4 5
4 7