PTA - sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和

题目描述:

给定两个均不超过9的正整数a和n,要求:编写函数fn(a,n), 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列之和。

函数接口定义:

def fn(a,n):
    

其中, a 和 n 都是传入的参数。 a 的值在[1, 9]范围;n 是[1, 9]区间内的个位数。函数返回数列之和。

裁判测试程序样例:


/* 请在这里填写答案 */

a,b=input().split()
s=fn(int(a),int(b))
print(s)

输入样例:

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

2 3

输出样例:

在这里给出相应的输出。例如:

246

我的答案:

这道题可以用python的特性来实现,即字符串可以相乘

方法一:

def fn(a,n):
    total = 0
    for i in range(1, n+1):
        total += int(str(a)*i)
    return total

解释一下,先将数字转化为字符串,然后字符串相乘,例如'2' * 2 = '22',然后再将字符串转化为数字就好了

方法二:

可以像传统方法那样,先算出这次的数字,再加到总数上去,但是这样就很繁琐,其他语言例如C++就只能这样干

def fn(a,n):
    total = 0
    part = a
    for i in range(0, n):
        total += part
        part = part * 10 + a
    return total

这里不要为了省事而直接对a进行操作,因为a的值会不断地改变,需要额外定义一个变量来进行相加操作

上一篇:个人博客|PHP源码|支持多国语言切换


下一篇:【面试题】MySQL(第一篇)