考虑以下生成整数序列的方法:在一个由等于 1 的单个元素组成的序列中,我们执行 n−1 个步骤。在每一步中,生成一个由两个上一步中获得的序列拼接而成的序列,然后在中间位置(拼接的位置)插入序列中未使用的最小的正整数。例如,我们在第一步之后得到序列 [1,2,1],在第二步之后得到序列 [1,2,1,3,1,2,1]。
你的任务是在 n−1 个步骤之后获得的序列中找到索引为 k(元素从 1 编号)的元素的值。
1≤n≤50,1≤k≤2n−1。
然后这是一个65pts的MLE代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,k;
cin>>n>>k;
vector<int> ve={1};
for(long long i=1;i<=n-1;i++){
vector<int> v;
v.insert(v.end(),ve.begin(),ve.end());
v.insert(v.end(),i+1);
v.insert(v.end(),ve.begin(),ve.end());
ve=v;
}
cout<<ve[k-1];
return 0;
}
求助/kk