PTA: PAT (Basic Level) Practice 1006

换个格式输出整数

题目描述:

让我们用字母 B来表示 “百”, 字母 S 表示 “十”, 用 12...n 来表示不为零的个位数字 n(n<10>)`n`(n<10>), 换个格式来输出任一个不超过 3 位的正整数. 例如 234 应该被输出为 BBSSS1234,因为它有 2 个"百", 3 个"十", 以及个位的 4.

输入格式:

每个测试输入包含 1 个测试用例,给出正整数 n(n<1000)n(n<1000).

输出格式:

每个测试用例的输出占一行,用规定的格式输出 nn.

输入样例 1:

1
234

输出样例 1:

1
BBSSS1234

输入样例 2:

1
23

输出样例 2:

1
SS123

C++

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
/* PTA 1006 换个格式输出整数
* 2022/07/21
* */

#include <iostream>
#include <string.h>

using namespace std;

void fun1(int a) {
for (int i = 0; i < a; i++)
cout << 'B';
}

void fun2(int a) {
for (int i = 0; i < a; i++)
cout << 'S';
}

void fun3(int a) {
for (int i = 1; i <= a; i++)
cout << i;
}

int main() {
char ch[3];
cin >> ch;
int a = strlen(ch);
switch (a) {
case 3:
fun1(static_cast<int>(ch[0]) - 48);
fun2(static_cast<int>(ch[1]) - 48);
fun3(static_cast<int>(ch[2]) - 48);
break;
case 2:
fun2(static_cast<int>(ch[0]) - 48);
fun3(static_cast<int>(ch[1]) - 48);
break;
case 1:
fun3(static_cast<int>(ch[0]) - 48);
break;
default:
break;
}
}

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/// PTA 1006 换个格式输出整数
/// 2023/01/06

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int i;
for (i = 0; i < n / 100; i++)
System.out.print("B");
for (i = 0; i < n % 100 / 10; i++)
System.out.print("S");
for (i = 1; i <= n % 10; i++)
System.out.print(i);
}
}

简要解析:

这道题非常简单. 只需要简单地根据 n 的每一位的数字, 循环输出对应位的字母即可, 没有什么难度.
也可以像 C++ 代码所写的那样, 先对数据进行位数判断, 之后根据不同位数进行处理, 当然这样就比较麻烦了.
总的来说, 还是 Java 代码的解题思路简单明了.

2023-02-12 
IP属地: 曹县

PTA: PAT (Basic Level) Practice 1006
https://dengwuli.github.io/2023/02/12/PTA 题解/PAT (Basic Level) Practice 1006/
作者
DengWuLi
发布于
2023年2月12日
更新于
2023年7月14日
许可协议