chào mn ạ. Mn cho e hỏi code của e bị lỗi thực thi vì nguyên nhân gì với ạ. Cảm ơn mn nhiều!
Đề bài:
Một dãy số tự nhiên bắt đầu bởi con số 1 và được thực hiện N-1 phép biến đổi “gấp đôi” dãy số như sau:
Với dãy số A hiện tại, dãy số mới có dạng A, x, A trong đó x là số tự nhiên bé nhất chưa xuất hiện trong A.
Ví dụ với 2 bước biến đổi, ta có [1] à [1 2 1] à [1 2 1 3 1 2 1].
Các bạn hãy xác định số thứ K trong dãy số cuối cùng là bao nhiêu?
Input:
Dòng đầu tiên là số lượng bộ test T (T ≤ 20).
Mỗi test gồm số nguyên dương N và K (1 ≤ N ≤ 50, 1 ≤ K ≤ 2N - 1).
Output:
Với mỗi test, in ra đáp án trên một dòng.
Ví dụ:
Input Output 2
3 2
4 82
4Giải thích test 1: Dãy số thu được là [1, 2, 1, 3, 1, 2, 1].
Giải thích test 2: Dãy số thu được là [1, 2, 1, 3, 1, 2, 1, 4, 1, 2, 1, 3, 1, 2, 1].
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
long long n,k;
cin>>n>>k;
string s = "1";
string res = "";
long long x = 1;
long long j=n-1;
while(j--){
string tmp = string(s.rbegin(),s.rend());
x++;
res = s + to_string(x) + tmp;
s = res;
}
cout<<res[k-1]<<endl;
}
}