蓝桥杯python编程每日刷题 day four

题目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)],则会导致因一行的改变而导致矩阵整体的改变

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值