PAT乙级1006

题目链接

https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

题解一

这道题其实很简单,获取用户输入后,判断数字的位数,根据位数的不同,再获取百位、十位、个位的数字,然后据其进行字符串拼接,最后输出。

啧,太久没有写C++代码了,下面代码里的numArr可以用string类型的,而且你看完题解二会觉得我是不是傻了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// PAT BasicLevel 1006
// https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

#include <iostream>
#include <string>
using namespace std;

int getbitnum(int num);

int main()
{
// 获取用户输入的数字
int num=0;
cin >>num;

// 获取数字位数
int numOfBits=getbitnum(num);

// 存储输出内容
string str="";

// 十个数字,C++的字符串不能直接加数字进行拼接
char numArr[9] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};

// 生成输出内容所用的中间变量
switch (numOfBits)
{
case 3:{
int bai = num / 100;
for (int i = 0; i < bai; i++)
{
str += "B";
}
num %= 100;
}

case 2:{
int shi = num / 10;
for (int i = 0; i < shi; i++)
{
str += "S";
}
num %= 10;
}

case 1:
for(int i=0;i<num;i++){
str +=numArr[i];
}
}

// 输出结果
cout << str;
return 0;
}

// 获取数字的位数
int getbitnum(int num)
{
// 默认一位数
int numOfBits=1;

if(num>99){ // 三位数
numOfBits=3;
}else if(num>9){ //两位数
numOfBits=2;
}
return numOfBits;
}

题解二

这是网上搜到的题解,比题解一好多了。我傻了我傻了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// PAT BasicLevel 1006
// https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592

#include <iostream>
#include <string>
using namespace std;


int main()
{
// 获取用户输入的数字
int num=0;
cin >>num;

// 得到每位数字
int bai = num / 100;
int shi = num % 100 / 10;
int ge = num % 10;

// 输出结果
for (int i = 0; i < bai; i++){
cout << 'B';
}

for (int i = 0; i < shi; i++)
{
cout << 'S';
}

for(int i=1;i<=ge;i++){
cout << i;
}

//system("pause");
return 0;
}

作者:@臭咸鱼

转载请注明出处:https://chouxianyu.github.io

欢迎讨论和交流!