总结前面阶段的刷题知识点
1.GCD+LCM
def gcd(a,b):
if b ==0:return a
else: return gcd(b,a%b)
from math import *
def lcm(x,y): return x//gcd(x,y)*y
2.进位处理
e.x
n = int(input())
x = [0] + list(map(int, list(input())))[::-1]
y = [0] + list(map(int, list(input())))[::-1]
# dp[i][j]表示i~n个数已经相等,j存第i个数相等的方式
dp = [[0] * 3 for i in range(n + 1)]
dp[1][0] = abs(x[1] - y[1]) # 不进退位
dp[1][1] = 10 - x[1] + y[1] # 进位
dp[1][2] = 10 - y[1] + x[1] # 退位
for i in range(2, n + 1):
dp[i][0] = min(dp[i - 1][0] + abs(x[i] - y[i]), dp[i - 1][1] + abs(x[i] - y[i] + 1), dp[i - 1][2] + abs(x[i] - y[i] - 1))
dp[i][1] = min(dp[i - 1][0] + 10 - x[i] + y[i], dp[i - 1][1] + 10 - (x[i] + 1) + y[i], dp[i - 1][2] + 10 - (x[i] - 1) + y[i])
dp[i][2] = min(dp[i - 1][0] + 10 - y[i] + x[i], dp[i - 1][1] + 10 - y[i] + (x[i] + 1), dp[i - 1][2] + 10 - y[i] + (x[i] - 1))
print(min(dp[n][0], dp[n][1], dp[n][2]))
3.分数表示
4.datetime模块
5.占位符
#整数占位符
>>> a = "好好%d好" % (100)
>>> print(a)
好好100好
#%4d 占4位,原字符串默认居右
>>> a = "好好%4d好" % (100)
>>> print(a)
好好 100好
#%-4d 占4位,原字符串默认居左
>>> c = "好好%-4d好" % (100)
>>> print(c)
好好100 好
#%04d 占4位,0补位
>>> d = "好好%04d好" % (100)
>>> print(d)
好好0100好
6.输出小数点表示
print("{:.2f}".format(sum(lis)/n))
7.字符串处理
.isdigit()可用于判断字符中每个小字是否为数字
8.itertools库accumulate模块
>>> a=[1,2,3,4,5]
>>> b=accumulate(a) #默认是累加
>>> b #这里返回的是一个可迭代对象
<itertools.accumulate object at 0x7f3e5c2f4e48>
>>> list(b) #强制转化
[1, 3, 6, 10, 15]
>>>