题目名称 2311. [HZOI 2015]简单的01串
输入输出 get_kth.in/out
难度等级
时间限制 100 ms (0.1 s)
内存限制 64 MiB
测试数据 10
题目来源 GravatarAglove 于2016-05-13加入
开放分组 全部用户
提交状态
分类标签
数位DP
分享题解
通过:1, 提交:1, 通过率:100%
GravatarAglove 100 0.003 s 0.32 MiB C++
关于 简单的01串 的近10条评论(全部评论)

2311. [HZOI 2015]简单的01串

★   输入文件:get_kth.in   输出文件:get_kth.out   简单对比
时间限制:0.1 s   内存限制:64 MiB

【题目描述】

将n位至少含有一个零和一个一的二进制串(允许前导零)按字典序从小到大排序后开始取数

每次取一个二进制串之后将序列中的这个串的取反串,逆序串和逆序取反串删掉

求第k次取数所取的二进制串

如果第k次取数时已经没有数字可以取,输出-1

【输入格式】

第一行输入n,k如题意所示

n<=50,k<=10^12

【输出格式】

输出答案所求的二进制串

【样例输入】

4 4

【样例输出】

0101

【提示】

样例解释:

排序: 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110

之后我们会分成五组:{0001, 0111, 1000, 1110}, {0010, 0100, 1011, 1101}, {0011, 1100}, {0101, 1010}, {0110, 1001}

取完组里的第一个之后其余的数字会被删掉

所以第四组的第一个就是我们要求的答案

题目来源:codeforces