首页 > 试题广场 >

小红的字符生成

[编程题]小红的字符生成
  • 热度指数:1088 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红每次可以把一个字符变成两个字母表中比它小一位的字符。例如,可以把'b'变成两个'a',可以把'z'变成两个'y'。
小红希望最终可以生成 x 个'a',你能帮小红求出初始的字符串吗?请你输出长度最短的合法字符串,有多解时输出任意即可。

输入描述:
一个正整数x,代表最终的'a'的数量。



输出描述:
一个字符串,代表小红操作前的字符串。如果有多个合法解,输出任意一个合法字符串即可。但需要保证输出的是最短字符串。
示例1

输入

5

输出

ca

说明

"ca"->"bba"->"aaaaa"
输出ac也是可以的
n = int(input())
base = 0
res = []
while n!=0:
    if n % 2 == 1:
        res.append(chr(97+base))
    n //= 2
    base += 1
print(''.join(res))
// 相当于把数字跟转成二进制,0~26位上的1对应字母
发表于 2023-03-14 22:21:19 回复(0)