2020-/7月/Province_C_C++_A/试题D:矩阵
试题 D: 矩阵
【问题描述】
把1∼2020放在2×1010的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案?
答案很大,你只需要给出方案数除以2020的余数即可。
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。
本题的结果为一个 整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路:
生成器生成一个列表,根据题意,列表第一个位置一定是1,所以索引为0的等于1,然后利用双层for循环遍历。
代码:
if __name__ == '__main__':
res =[[i == 0 for i in range(1011)]for i in range(1011)]
res[0][0] = 1
for i in range(1011):
for j in range(1011):
if i > j:
res[i][j] += res[i-1][j]
if j != 0:
res[i][j] += res[i][j-1]
res[i][j] %= 2020
print(res[-1][-1])
运行结果: