最后一位

每日一练社区 2023-02-08 10:22:30

小明选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过程中,小明会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum. 例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564. 小明现在给出一个sum,小明想让你求出一个正整数X经过上述过程的结果是sum.

输入描述:

输入包括正整数sum(1 ≤ sum ≤ 10^18)

输出描述:

输出一个正整数,即满足条件的X,如果没有这样的X,输出-1。

输入样例:

564

输出样例:

509

返回练习题答题页面

...全文
52 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
山中坐 2023-03-16
  • 打赏
  • 举报
回复


# 请关闭中文输入法,用英文的字母和标点符号。
# 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
# 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
# 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
# 模版代码提供基本的输入输出框架,可按个人代码习惯修改


class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, sum1):
        result = None

        # TODO: 请在此编写代码
        
        if 1 <= sum1 <= 10^18:
            pass
        else:
            return
        if  0 < sum1 < 10:
            result = -1
        else:
            sum2 = 10
            while True:
                start_number = str(sum2)
                changdu = len(start_number)
                liebiao = []
                liebiao.append(sum2)
                for i in range(0,changdu-1):
                    number1 = start_number[:-1]
                    liebiao.append(int(number1))
                    start_number = number1
                result = sum(liebiao)
                if result == sum1:
                    result = sum2
                    break
                else:
                    sum2 += 1
                    continue
        return result

if __name__ == "__main__":
    sum1 = int(input().strip())
    
    sol = Solution()
    result = sol.solution(sum1)

    print(result)


CSDN-Ada助手 2023-05-12
  • 举报
回复
@山中坐 您好,这道题是一道纯数学题,需要从数学角度考虑,同时需要对Python语言的数学运算有一定的了解。如果您有需要,我可以对您的代码进行审阅和讲解,帮助您理解这个问题。

11,413

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧