站外求助
  • 板块学术版
  • 楼主Ice_rnfmabj
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/7/17 11:35
  • 上次更新2024/7/17 13:36:10
查看原帖
站外求助
695943
Ice_rnfmabj楼主2024/7/17 11:35

考虑以下生成整数序列的方法:在一个由等于 11 的单个元素组成的序列中,我们执行 n−1n−1 个步骤。在每一步中,生成一个由两个上一步中获得的序列拼接而成的序列,然后在中间位置(拼接的位置)插入序列中未使用的最小的正整数。例如,我们在第一步之后得到序列 [1,2,1],在第二步之后得到序列 [1,2,1,3,1,2,1]。

你的任务是在 n−1n−1 个步骤之后获得的序列中找到索引为 kk(元素从 11 编号)的元素的值。

1≤n≤501 \le n \le 50,1≤k≤2n−11 \le k \le 2^n−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

2024/7/17 11:35
加载中...