1 条题解

  • 0
    @ 2025-8-24 23:03:11

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 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

    [蓝桥杯 2023 国 Python A/Java A] 整数变换

    信息

    ID
    10687
    时间
    2000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者