[每日一题]40、求a+aa+aaa+..+aaa...的值

Python Every Day, 第 40 期


求 s = a + aa + aaa + aaaa + ..的值,其中a是一个1~10中的数字,
输入:num(初始数), times(执行次数),返回最终的结果

如:num = 2, times = 5,
返回结果为:2 + 22 + 222 + 2222 + 22222 的和

这是一道常见的计算题,相比于其他语言Python实现起来更加容易。

解决这道理,先分析一下a、aa、aaa他们的关系,就拿2举例吧

22 = 2 * 10 + 2

222 = 2 * 100 + 222222 =  2 * 1000 + 222

...


不难发现它们的规律,即 2 * 10^n + 前一个数。得出全部的数,再去求和即可。

大家可以自己思考,看看有几种解决办法,以下给出两种思路,仅供参考

方法一、

将num作为字符串处理,第一个数为num、第二个数为num*2...

这种方法,最为简单,一行代码即可解决

def temp(num, times):
    return sum([int(num * i) for i in range(1, tims + 1)])

方法二、

通过遍历,求出每个元素的个数,然后进行求和

def temp(num, times):
    total = 0
    for i in range(1, tims + 1):
        for j in range(i):
            # 2* 10^j + 前一个数
            total += num * (10 ** j)
    return total


以上,便是今天的分享,希望大家喜欢,觉得内容不错的,欢迎点击「在看」支持,谢谢各位。

如需查看更多[Python Every Day]系列,请点击我的主页的【每日一题】菜单。
640?


感谢您的阅读

640?wx_fmt=gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值