小红希望最终可以生成
一个正整数,代表最终的'a'的数量。
一个字符串,代表小红操作前的字符串。如果有多个合法解,输出任意一个合法字符串即可。但需要保证输出的是最短字符串。
5
ca
"ca"->"bba"->"aaaaa"输出ac也是可以的
#include <iostream>
using namespace std;
/*
* 注意到这个其实就是把x分解成2的幂级数表示
*/
int main() {
int x;
cin>>x;
char ch = 'a';
while(x){
if(x&1)
cout<<ch;
ch++;
x>>=1;
}
}
// 64 位输出请用 printf("%lld") # 获取用户输入的整数并转换为二进制字符串,去掉前缀'0b'
x = list(bin(int(input()))[2:])
# 初始化第一个字母的ASCII码
first = ord("a")
# 反转二进制列表并从低位到高位遍历
for i in x[::-1]:
if i == "1":
print(chr(first), end="")
first += 1 # 无论是否输出,都递增以准备下一个可能的字母 import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
// System.out.println((int) ('z'-'a'));
StringBuilder res = new StringBuilder();
int log = (int) (Math.log(n) / Math.log(2));
int yu = n % 2;
while (log != 0) {
res.append((char) ('a' + log));
n -= (int) Math.pow(2, log);
if (n == 0)break;
log = (int) (Math.log(n) / Math.log(2));
}
if (yu != 0) {
res.append('a');
}
System.out.println(res);
}
} import sys n=eval(input()) #print (n) n1 = bin(n)[2:] #print (str(n1)) n1=n1[::-1] r='' cl='abcdefghijklmnopqrstuvwxyz' for i in range(len(n1)): #print (n1[i],cl[i]) if n1[i]=='1': r=r+cl[i] print (r[::-1])
const rl = require('readline').createInterface({
input:process.stdin
});
rl.question('',(len)=>{
len = parseInt(len);
const count = [
['a',1],
['b',2],
['c',4],
['d',8],
['e',16],
['f',32],
['g',64],
['h',128],
['i',256],
['j',512],
];
const ans = [];
while(len !== 0){
for(let i=count.length-1;i>=0;i--){
if(len>=count[i][1]){
len -= count[i][1];
ans.push(count[i][0]);
break;
}
}
}
console.log(ans.join(''));
rl.close();
}); n = int(input())
dic = {1: 'a', 2: 'b', 4: 'c', 8: 'd', 16: 'e', 32: 'f', 64: 'g', 128: 'h', 256: 'i', 512: 'j'}
res = ''
len_x = len(dic)
for i in range(len_x - 1, -1, -1):
if 2**i == n:
res += dic[2 ** i]
break
if 2**i < n:
res += dic[2 ** i]
n = n - 2**i
print(res) # 9a --> 最短 --->
# b --> aa , c --> aaaa, d --> aaaaaaaa
# 最终的数目就是在 1 2 4 8 16 组合
# 比如 5 --> 4 + 1 ca
init = 'a'
num = int(input())
pre = 1
res = [1]
out = ''
while(pre < 1000):
pre = pre * 2
res.append(pre)
for i in range(len(res)-1,-1,-1):
if res[i] == num:
out += chr(ord('a')+i)
break
if res[i] < num:
out += chr(ord('a')+i)
num = num - res[i]
print(out)