1 条题解
-
0
自动搬运
来自洛谷,原作者为

Oracynx
CodingOIer -> Oracynx || OI 代码位于 https://github.com/Oracynx/Source-Code || https://codingoier.com搬运于
2025-08-24 23:03:11,当前版本为作者最后更新于2024-08-25 21:10:49,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P10985 [蓝桥杯 2023 国 Python A] 整数变换 题解
本题是 Python 题
思路分析
显然的,这道题目只考察选手对 Python 的运用,我们可以顺理成章的写出下面的代码。
s = input() # 输入 s,此时的 s 是字符串 answer = 0 # 初始化答案变量 while s != '0': answer += 1 # 更新答案 remove = 0 # 统计每一位的和 for x in s: # 枚举每一个字符 remove += int(x) # 更新每一位的和(必须用 int 将字符串类型转为数字类型) s = str(int(s) - remove) # 更新字符串,使用 str 将数字类型转为字符串类型 print(answer) # 输出答案(你知道为什么这个代码不在代码实现板块中吗?)
得益于 Python 的巨大常数,同时根据常识,字符串运算的常数是数字的数倍,这段代码 TLE 了……
而 PyPy3 对整数的运算有过优化(好像是不超过存储范围就先用类似于 C++ 的
long long存,放不下了再用高精度,具体忘了),所以我们可以将其全程更改为使用整数计算即可通过。代码实现
代码细节针对语言语法薄弱的同学已经写在了注释里。
s = int(input()) # 输入 s,并把 s 从字符串转为数字 answer = 0 # 初始化答案变量 while s != 0: answer += 1 # 更新答案 remove = 0 # 统计每一位的和 n = s # 使用 int 将 s 转为数字类型 while n != 0: # 枚举 n 的每一位 remove += n % 10 # 更新和 n //= 10 # 重点:Python 中的除法符号 / 是浮点数(小数)的除法,整除符号是 // s -= remove # 将原数减去每一位的和 print(answer) # 输出答案
- 1
信息
- ID
- 10687
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者