让我们用字母 B
来表示“百”、字母 S
表示“十”,用 12...n
来表示不为零的个位数字 n
(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234
应该被输出为 BBSSS1234
,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123
写这段的时候发现我对string类型的学习还不够,之后我再写一篇string用法的简要说明来巩固一下,利用下面的思路可以很方便的拓展功能,有更好的位数时只需要进行略微的添加修改即可
#include<iostream>
#include<map>
#include<string>
using namespace std;
// 生成个位数的字符串表示
string gewei(string& s, int n) {
for (int i = 1; i <= n; i++) {
s += to_string(i);
}
return s;
}
int main() {
int solu;
int i = 1;
cin >> solu;
string ss = "";
map<int, int> mp;
// 将数字按位存储在映射中
while (solu) {
mp[i] = solu % 10;
i++;
solu /= 10;
}
// 根据位数和映射的值构造字符串
for (auto it = mp.rbegin(); it != mp.rend(); it++) {
switch (it->first) {
case 1:
gewei(ss, it->second); // 处理个位
break;
case 2:
ss += string(it->second, 'S'); // 处理十位
break;
case 3:
ss += string(it->second, 'B'); // 处理百位
break;
default:
cout << "error";
break;
}
}
cout << ss;
return 0;
}