Day_05_Weekend_Homework_Answers
''''''
''' 基础题 '''
# 1, 五位数中,对称的数称为回文数,找出所有的回文数。
# 如: 12321
for i in range(10000, 100000):
a = i//10000
b = i//1000%10
c = i//10%10
d = i%10
if a==d and b==c:
print(i)
print()
# 2, 求1!+2!+3!+4!+5!
# !表示阶乘
n = 5
s = 0
for i in range(1, n+1):
s2 = 1
for j in range(1, i+1):
s2 *= j
s += s2
print(s)
# 3, 找出所有的水仙花数,三位数,各位立方和等于该数本身。
# 如: 153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3
for i in range(100, 1000):
a = i//100
b = i//10%10
c = i%10
if a**3 + b**3 + c**3 == i:
print(i)
''' 进阶题 '''
# 1, 输入任意两个数,如果第一个数小,从第一个数打印到第二个数,如果第二个数小,从第二个数打印到第一个数
m = 10
n = 2
max1 = max(m, n)
min1 = min(m, n)
for i in range(min1, max1+1):
print(i, end=',')
print()
# 2, 输入两个数n,a, 输出对应的结果
# 如: n=3,a=2; 输出 2 + 22 + 222 的值。(****)
# 如: n=4,a=3; 输出 3 + 33 + 333 + 3333的值。
# 提示: 1、n = 3,相加三次,每次相加比前一次相加的数,多一位
# 2、每次多的这个位数的值为a, 3, 3*10+3(33), 33*10+3(333),...
n = 5
a = 2
s = 0
t = 0
for i in range(n):
t = t*10 + a
# print(t)
s += t
print(s)
# 3, 输入两个数,求两个数的最大公约数(*****)
# 如: 12和8的最大公约数是4,
# 提示: 能够同时整除两个数的最大数
# 1, 先找出两个数中最小的那个数,
# 2, 最小数每次-1, 找出能被两个数整除的数(退出循环break)
m = 12
n = 8
min1 = min(m, n)
for i in range(min1, 0, -1):
if m%i==0 and n%i==0:
print(i)
break
# 4, 输入两个数,求两个数的最小公倍数(****)
# 如: 9和6的最小公倍数是18,
# 1, 先找出两个数中的最大数
# 2, 最大数++,找出能被两个数整除的数(退出循环break)
m = 9
n = 6
max1 = max(m, n)
for i in range(max1, m*n+1):
if i%m==0 and i%n==0:
print(i)
break
# 5, 宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。
# 达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,
# 后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,
# 刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?
s = 0
for i in range(64):
s += 2**i
print(s) # 18446744073709551615
print(s/10**16, "亿亿") # 1844亿亿
# 丈母娘要彩礼
# 第1天 1分
# 第2天 2分
# 第3天 4分
# 第4天 8分
# ...
s = 0
for i in range(30):
s += 2**i
print(s) # 10737418