描述
给定某数字A(1≤A≤9)以及非负整数N,求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,sum=1+11+111=123。
输入格式
第一行输入一个整数A,且该数介于1至9之间(包含1和9)
第二行输入一个非负整数N
输出格式
输出其N项数列之和sum的值。
当输入不符合要求时输出:’data error’
这是一个前n项累加的问题,一个循环就可以解决,难点是通项的构建,需要注意的是输入数值的区间限制和运算中的数值类型转换。有这样几种实现方法:
- 数学方法:后一项是前一项乘10再加上次一项 tmp = tmp * 10 + A
A = int(input())
num = int(input())
SumOfn = 0
if 1 <= A <= 9 and num >= 0:
tmp = A
for i in range(num):
SumOfn = SumOfn + tmp
tmp = tmp * 10 + A
print(SumOfn)
else:
print('data error')
- 字符串方法:第 i 项为字符 A 乘 i , A * i 便为第 i 项,将其取整后累加便可。
A = input()
num = int(input())
SumOfn = 0
if 1 <= int(A) <= 9 and num >= 0:
for i in range(1,num + 1):
SumOfn = SumOfn + int(A * i)
print(SumOfn)
else:
print('data error')
- 用列表推导式实现
A,num = input(),int(input())
if 1 <= int(A) <= 9 and num >= 0:
print(sum([int(A * i) for i in range(1,num + 1)]))
else:
print('data error')
- 结合条件表达式:
A,num = input(),int(input())
print(sum([int(A * i) for i in range(1,num + 1)])) if 1 <= int(A) <= 9 and num >= 0 else print('data error')