上海市计算机学会-巧妙的数

博客探讨了如何判断一个正整数是否为巧妙数,即该数能被其每个非零数字整除。文章提到了高精度除法在解决此问题中的应用,并提到作者实现的程序在比赛中获得了70分,但存在超时问题,通过查看其他正确解决方案仍未能找出原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述 上海市计算机学会竞赛平台 | YACS

如果一个十进制正整数能够被它的每一个非零数码整除,则称它为巧妙的数,譬如 102102 是一个巧妙的数,因为 102 能被 1 与 2 整除,而 2021 不是,因为它不能被 2 整除。给定一个正整数 n,请判定它是否为巧妙的数。

这里面要用到一个高精度除法的做法,原理复杂,以后有时间了专门记录一下。这次的程序只有70分,不过所幸能查看其它AC写法,不过技艺不精,没看出为啥超时。。还有一个WA

n=input()

num=[0]*len(n)
for i in range(len(n)):
    num[len(n)-i-1]=n[i]
# print(num)

def isInteger(b): #b作为除数,模拟除法竖式计算
    mod = 0   #mod用于存储余数
    for i in range (len(n)-1,-1,-1):
        # print(int(num[i]))
        mod = (int(num[i]) + mod * 10) % b

    return mod
#如果mod为0,说明能被整除,否则不能被整除
a=set(num)
a.remove('0')
# print(a)
def judge():
    for i in a:
        tmp=int(i)
        out=isInteger(tmp)
        if out!=0:
            return ("not clever")
        return "clever"

print(judge())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xy404chef

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值