回文二进制数
测试数据来自 system/1655
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【问题描述】
回文二进制数是指从左向右念和从右向左念都一样的数。如 11011 就是一个典型的回文二进制数。现在给定两个整数 \(m\) 和 \(n\),那么在所有的 \(m\) 位的二进制数中(不含前导 0),含有 \(n\) 个数字 1 最大的回文二进制数对应的十进制数是多少?
比如:\(m=6,n=4\) 时,在 6 位二进制数中含有 4 个 1 的最大回文二进制数是 110011,对应的十进制数为 51。
再如:\(m=5,n=3\) 是,在 5 位二进制数中含有 3 个 1 的最大回文二进制数是 10101,对应的十进制数为 21。
当然也有不存在解的情况,比如 \(m=6,\ n=3\)时,就不存在这样的回文数二进制数。
【输入格式】
输入仅一行两个整数,第一个是整数 \(m\),第二个数整是 \(n\)。
【输出格式】
输出包含一行,如果不存在解,则输出None,否则输出最大的回文二进制数对应的十进制数。
【输入输出样例1】
Input
6 4
Output
51
【输入输出样例2】
Input
5 3
Output
21
【输入输出样例3】
Input
6 3
Output
None
【数据说明】
对于 \(100\%\) 的数据 \(1≤n≤m≤63\)。
【来源】
Mr.he