获得徽章 0
python 差分矩阵模板
def insert(diff, x1, y1, x2, y2, c):
diff[x1][y1] += c
diff[x2+1][y2+1] += c
diff[x1][y2+1] -= c
diff[x2+1][y1] -= c
if __name__ =="__main__":
n, m, q = map(int, input().split())
sequ=[[0]*(m + 10) for i in range(n + 10)]
diff=[[0]*(m + 10) for i in range(n + 10)]
for i in range(n):
sequ[i+1][1:] = list(map(int, input().split()))
for i in range(1, n+1):
for j in range(1, m+1):
insert(diff, i, j, i, j, sequ[i][j])
for i in range(q):
x1, y1, x2, y2, c = map(int, input().split())
insert(diff, x1, y1, x2, y2, c)
for i in range(1, n+1):
for j in range(1, m+1):
diff[i][j] = diff[i][j-1] + diff[i-1][j] - diff[i-1][j-1] + diff[i][j]
print(diff[i][j], end=" ")
print()
def insert(diff, x1, y1, x2, y2, c):
diff[x1][y1] += c
diff[x2+1][y2+1] += c
diff[x1][y2+1] -= c
diff[x2+1][y1] -= c
if __name__ =="__main__":
n, m, q = map(int, input().split())
sequ=[[0]*(m + 10) for i in range(n + 10)]
diff=[[0]*(m + 10) for i in range(n + 10)]
for i in range(n):
sequ[i+1][1:] = list(map(int, input().split()))
for i in range(1, n+1):
for j in range(1, m+1):
insert(diff, i, j, i, j, sequ[i][j])
for i in range(q):
x1, y1, x2, y2, c = map(int, input().split())
insert(diff, x1, y1, x2, y2, c)
for i in range(1, n+1):
for j in range(1, m+1):
diff[i][j] = diff[i][j-1] + diff[i-1][j] - diff[i-1][j-1] + diff[i][j]
print(diff[i][j], end=" ")
print()
展开
评论
点赞
正整数高精度减法python实现
def compare(a, b):
if len(a) != len(b): return len(a)>len(b)
for i in range(len(a)-1, -1, -1):
if a[i] != b[i]:
return a[i] > b[i]
return True
def sub(A, B):
C = []
i, t = 0, 0
while i < len(A):
t = A[i] - t
if i < len(B):
t -= B[i]
C.append((t + 10) % 10)
if t < 0:
t = 1
else:
t = 0
i += 1
while len(C) > 1 and C[-1] == 0:
C.pop()
C = C[::-1]
return C
if __name__ == "__main__":
a = list(map(int, input()))
b = list(map(int, input()))
A = a[::-1]
B = b[::-1]
if compare(A, B):
result = sub(A, B)
print("".join(map(str, result)))
else:
result = sub(B, A)
print('-' + "".join(map(str, result)))
def compare(a, b):
if len(a) != len(b): return len(a)>len(b)
for i in range(len(a)-1, -1, -1):
if a[i] != b[i]:
return a[i] > b[i]
return True
def sub(A, B):
C = []
i, t = 0, 0
while i < len(A):
t = A[i] - t
if i < len(B):
t -= B[i]
C.append((t + 10) % 10)
if t < 0:
t = 1
else:
t = 0
i += 1
while len(C) > 1 and C[-1] == 0:
C.pop()
C = C[::-1]
return C
if __name__ == "__main__":
a = list(map(int, input()))
b = list(map(int, input()))
A = a[::-1]
B = b[::-1]
if compare(A, B):
result = sub(A, B)
print("".join(map(str, result)))
else:
result = sub(B, A)
print('-' + "".join(map(str, result)))
展开
评论
点赞
![[红脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_63.c32f5b5.png)
![[泣不成声]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_40.348108b.png)
![[敲打]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_36.c31c83f.png)
![[大哭]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_60.9016267.png)