首页 > 试题广场 >

小红的字符生成

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

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



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

输入

5

输出

ca

说明

"ca"->"bba"->"aaaaa"
输出ac也是可以的
实质上就是10进制向二进制的转化,转化后取对应位置的字母拼接上就可以了
import sys

for line in sys.stdin:
    a = int(line.split()[0])
    a_2 = format(a,'b')[::-1]
    res = ''
    for index,c in enumerate(a_2):
        if c == '1':
            res = res + chr(ord('a')+index)
    print(res[::-1])



发表于 2024-11-22 15:49:51 回复(0)