题目1:
问题描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示,输出格式
输出仅包含一个实数,为交的面积,保留到小数后两位,
(1)代码:
a = list(map(int,input().split())) b = list(map(int,input().split())) def suan_chu_mian_ji(a,b): x_1 = max(a[0],b[0]) x_2 = min(a[2],b[2]) y_1 = max(a[1],b[1]) y_2 = min(a[3],b[3]) if x_1 > x_2 and y_1 > y_2: return 0.0 area = (x_1-x_2) * (y_1-y_2) return area print(suan_chu_mian_ji(a,b))
(2)解析:
将交叉矩形的左上角和右上角的坐标求出来即可,其中a中的元素为[x1,y1,x2,y2]
题目2:
计算阶乘,如n! = n * (n-1) * (n-2) *...*3 * 2 * 1
(1)代码:
n = int(input()) k = 1 for i in range(n): k = k * n n = n - 1 if n == 1: break print(k)
题目3:
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
例如:
A=
12
3 4
A的2次幂
7 10
15 22
矩阵的乘法规则:
c[i][j] = a[i][k1] * b[k1][j] + a[i][k2] * b[k2][j] + ...
(1)代码:
def ju_zhen_xiang_cheng(a,b):
n = len(a)
c = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
for k in range(n):
c[i][j] += a[i][k] + b[k][j]
return c
def ju_zhen_de_n_ci_mi(a,m):
a_2 = a
for i in range(m - 1):
b = ju_zhen_xiang_cheng(a,a_2)
a_2 = b
matrix = [[1,2],[3,4]]
print(ju_zhen_de_n_ci_mi(matrix,3))
(2)解析:
根据矩阵的乘法规则,来进行计算
(3)注意事项:
c = [[0] * n for _ in range(n)]此处为标准的矩阵初始化,如果为
c = [[] * n for _ in range(n)],则会导致因一行的改变而导致矩阵整体的改变