题解 | #小红的字符生成#
小红的字符生成
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,从多到少来拆解。
也可以用二进制的形式来做。
智元机器人成长空间 220人发布