题解 | #小红的字符生成#

小红的字符生成

https://www.nowcoder.com/practice/f8659377ca104b1aad45dd2fb564c940

#include <iostream>
#include <map>
using namespace std;

int main() {
    int n;
    map<int, char> mp;
    int i = 1;
    for (char c = 'a'; c < 'k'; ++c) {
        mp[i] = c;
        i = i * 2; 
    }

    i = 1024;
    while (cin >> n) { // 注意 while 处理多个 case
        while (n > 0) {
            while (i > n) {
                i = i / 2;
            }
            cout << mp[i];
            n = n - i;
            i = i / 2;
        }
    }
}
// 64 位输出请用 printf("%lld")

这个题其实就是计算出每个字母代表几个a,从多到少来拆解。

也可以用二进制的形式来做。

全部评论

相关推荐

谁知道呢_:要掉小珍珠了,库库学三年,这个结果
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务