PAT09:数字黑洞
9.数字黑洞
题目
题目描述
1 | |
输入描述:
1 | |
输出描述:
1 | |
输入例子:
1 | |
输出例子:
1 | |
题解
输入与处理
首先,要考虑输入的读取,使用
input方法读取的是字符串类型。如果不满4位,需要使用字符串的zfill方法进行补齐。字符串排序
使用
sort方法对4位字符串进行排序,默认是非递减。使用参数reverse=True,得到非递增。差值计算
将排序后的字符串使用
int转换为整数,相减得到结果。格式化输出
根据题目的格式进行输出,再利用递归,将输出作为下一步的输入再判断。
边界条件
如果输入字符串的4位数字均相等,则做特殊输出:’N - N = 0000’。
如果输入为目标字符串6147,则终止递归。(特殊情况,如果第一次输入是6147需计算一次)
1 | |
知识点
输入的读取
1、input()方法:读取一行输入,返回的是字符串类型,去掉了换行符。
2、sys.stdin文件对象(不会自动转换类型、包含换行符):
- read()方法:读取所有输入
- readline()方法:读取一行输入
字符串补齐
1、zfill()方法(使用0填充):
1
2
3s = "42"
s = s.zfill(4)
print(s) # 00422、 rjust()方法(可指定字符填充):
1
2
3s = "42"
s = s.rjust(4, "2")
print(s)3、使用 f-string方法:
1
2
3s = "42"
s = f"{int(s):04d}" # 04d 表示至少 4 位,不足的地方用零填充
print(s)可以填充的为0和空格。04中的0表示填充字符,4表示填充到哪个宽度。
还可以选择填充后的对齐:
1
2
3f"{5:<4d}" # 左对齐
f"{5:>4d}" # 右对齐
f"{5:^4d}" # 居中对齐常见的类型转换符:
- **
d**:整数(decimal)- **
f**:浮动小数点数- **
s**:字符串- **
x**:十六进制整数(小写)- **
X**:十六进制整数(大写)- **
e**:科学计数法表示的浮动小数