欧拉计划 40

将正整数连接起来可以得到一个无理小数:

0.123456789101112131415161718192021…

可以看出小数部分的第12位是1。

如果用dn表示这个数小数部分的第n位,找出如下表达式的值:

d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000

n_list = [10 ** i for i in range(7)]
dn_prod = 1
digit = 1
n_digit = 9
for n in n_list:
    while n > n_digit:
        digit += 1
        n_digit += 9 * 10 ** (digit - 1) * digit
    n_d = n_digit - n
    n_num = n_d // digit
    num = 10 ** digit - 1 - n_num
    num_n = n_d % digit
    while num_n:
        num //= 10
        num_n -= 1
    dn = num % 10
    dn_prod *= dn
print(dn_prod)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值