首页 > 试题广场 >

小红的字符生成

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

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



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

输入

5

输出

ca

说明

"ca"->"bba"->"aaaaa"
输出ac也是可以的
头像 kkkyd
发表于 2024-11-20 10:40:03
#include <bits/stdc++.h> using namespace std; //模拟二进制 int main() { string t=""; int n,i=0; cin>>n; while(n){ 展开全文
头像 Mag1c0nch
发表于 2024-11-20 21:42:44
得到一个 a 需要 1 个 a得到一个 b 需要 2 个 a得到一个 c 需要 4 个 a得到一个 d 需要 8 个 a不难发现对于每个字母就好比二进制上的一位数例如 n=11 时,二进制为1011,很明显用每个二进制位上对应的字母构造出 n 是字符最少的 #include <bits/std 展开全文
头像 AYo爱吃糖葫芦
发表于 2024-11-21 22:29:06
二进制a: 2^0b: 2^1c: 2^2d: 2^3 ...... #include <bits/stdc++.h> using namespace std; int n; void solve() { cin>>n; vector<char> 展开全文
头像 Kato_Shoko
发表于 2024-11-19 20:52:49
观察样例可知,相邻的每个字母之间存在2倍的关系,不难想到利用二进制来处理,a=1,b=2,c=4,d=8......将输入的数据转化为二进制数,然后就可以判断该位置是否存在一个字母,即是二进制的第i位是否有1。 #include <iostream> #include <queue 展开全文
头像 宿伞之神
发表于 2024-11-20 00:11:02
看一下n的二进制即可。 #include<bits/stdc++.h> #define int long long #define double long double #define x first #define y second using namespace std; typed 展开全文
头像 鹏城飞翔
发表于 2024-11-20 10:42:41
真是优美的二进制啊 ヾ(•ω•`)o #include <iostream> using namespace std; int main() { int n; cin>>n; int pos=0; while(n!=0) { 展开全文
头像 予世柔
发表于 2024-11-20 11:13:48
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = 展开全文
头像 来泡池子了的西红柿很奔放
发表于 2024-11-26 11:15:16
#include <stdio.h> #include <stdlib.h> int main() { int x; if (scanf("%d", &x) != EOF) { int charnum = 0; 展开全文
头像 missay情玖
发表于 2024-11-21 19:46:10
#include <iostream> using namespace std; int n ; int main() { cin>>n; // 把这个数字拆分成2的n次方 因为 x 是1000 最多是 2 的10次方 直接判断就行 while(n 展开全文
头像 八重嘤嘤嘤嘤嘤嘤嘤嘤
发表于 2024-11-24 23:01:13
其实就是二进制数()题目没规定输出的顺序,所以就直接二进制最低位为a,每移动一位就ascll码+1。对应二进制位为1,则把该字母加入答案。例如二进制10011,对应的就是eba用python的话可以三行解决ord()是返回对应的ASCII码值,chr()是将字符的 ASCII 值转换回字符通过 ch 展开全文