浙大版《Python 程序设计》题目集 第6章函数-1 使用函数求特殊a串数列和 (10分)

时间:2020-9-11 作者:admin


使用函数求特殊

aa

串数列和 (10分)

给定两个均不超过9的正整数

aa

nn

,要求编写函数

fn(a,n)fn(a,n)

a+aa+aaa+++aaaaa+aa+aaa++⋯+aa⋯aa

(

nn

aa

)之和,

fnfn

须返回的是数列和

函数接口定义:

fn(a,n)fn(a,n)

其中

aa

nn

都是用户传入的参数。

aa

的值在

[1,9][1, 9]

范围;

nn

[1,9][1, 9]

区间内的个位数。函数须返回级数和

裁判测试程序样例:

/* 请在这里填写答案 */
a,b=input().split()
s=fn(int(a),int(b))
print(s)

输入样例:

在这里给出一组输入。例如:

2 3

输出样例:

246

Python

先计算a、aa、aaa再将这几个数相加

这种是比较麻烦的做法,先通过for循环,将2,22,222表示出来,再通过for循环将已经表示出的变量相加。

def fn(a, n):
    sum = 0
    for i in range(n):
        s = 0
        q = 0.1  # 记录10次方
        for j in range(i + 1):
            q = q * 10
            p = int(q) * a
            s = s + p
        sum = sum + s
    return sum
每次记录

通过观察网络上的代码,其实问题可以简化,这个和可以这么表示,2,20+2,200+22的加和

def fn(a, n):
    sum, res = 0, 0
    for i in range(1, n + 1):
        res = res + a
        a = a * 10
        sum = res + sum
    return sum
快速字符串转整型

暴力构造相同字符串

aaaaaa

转化为int类型

def fn(a, n):
    return sum(int(str(a) * i) for i in range(1, n + 1))
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。