#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,从多到少来拆解。
也可以用二进制的形式来做。