2022.3.29
题目 1013: [编程入门]Sn的公式求和
题目描述:求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入。
Python代码:
n = int(input())
sn = 0
for i in range(1,n+1):
sn += eval('2' * i)
print(sn)
2022.3.30
题目 1014: [编程入门]阶乘求和
题目描述:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
Python代码:
n = int(input())
sn = 0
s = 1
ls = []
if 1 <= n <= 20:
for i in range(1,n+1):
s *= i
ls.append(s)
for i in ls:
sn += i
print(sn)
else:pass
2022.3.31
题目 1015: [编程入门]求和训练
题目描述:求以下三数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和。
输入:a b c
输出:1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/c
Python代码:
a,b,c = map(int,input().split())
sa = 0
sb = 0
sc = 0
s = 0
for i in range(1,a+1):
sa += i
for j in range(1,b+1):
sb += j ** 2
for k in range(1,c+1):
sc += 1/k
s = sa + sb + sc
print(f'{s:.2f}')
2022.4.1
题目 1016: [编程入门]水仙花数判断
题目描述:打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。
Python代码:
ls = []
for i in range(100,1000):
ls.append(str(i))
for j in ls:
if int(j) == int(j[0])**3 + int(j[1])**3 + int(j[2])**3:
print(j)
或者:
for i in range(100,1000):
if i == (i//100) ** 3 + (i//10%10) ** 3 + (i%10) ** 3:
print(i)
2022.4.2
题目 1017: [编程入门]完数的判断
题目描述:一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子
输入:1000输出:6 its factors are 1 2 3 28 its factors are 1 2 4 7 14 496 its factors are 1 2 4 8 16 31 62 124 248
Python代码:
n = int(input())
def fun(num):
ls = []
for i in range(2, num//2 + 1):
if num % i == 0:
ls.append(i)
else:
continue
return ls
for j in range(5, n+1):
m = fun(j)
m.insert(0,1)
s = sum(m)
if s == j:
print("{} its factors are {}".\
format(j," ".join(str(i)for i in m)),end='\n')
或:
n = int(input())
for j in range(6, n+1):
ls = [1]
for i in range(2, j//2 + 1):
if j % i == 0:
ls.append(i)
s = sum(ls)
if s == j:
print("{} its factors are {}".\
format(j," ".join(str(i)for i in ls)),end='\n')
或:
from functools import reduce
n = int(input())
for i in range(2, n+1):
ls = [1]
for j in range(2, i):
if i % j == 0:
ls.append(j)
if i == reduce(lambda x, y: x + y, ls):
print(str(i)+" its factors are ", end='')
for k in range(len(ls)):
print(f"{ls[k]}", end=' ')
print()
2022.4.3
题目 1018: [编程入门]有规律的数列求和
题目描述:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。