1468 - 平方矩阵
Time Limit : 1 秒
Memory Limit : 64 MB
输入整数 N,输出一个 N 阶的二维数组 M。
具体形式可参考样例。
Input
输入包含多行,每行包含一个整数 NN。 当输入行为 N=0N=0 时,表示输入结束,且该行无需作任何处理。
数据范围 0≤N≤150≤N≤15
Output
对于每个输入整数 NN,输出一个满足要求的 NN 阶二维数组。
每个数组占 NN 行,每行包含 NN 个用空格隔开的整数。
每个数组输出完毕后,输出一个空行。
Examples
Input
1
2
3
4
5
0
Output
1
1 2
2 4
1 2 4
2 4 8
4 8 16
1 2 4 8
2 4 8 16
4 8 16 32
8 16 32 64
1 2 4 8 16
2 4 8 16 32
4 8 16 32 64
8 16 32 64 128
16 32 64 128 256
解题代码
def demo(n):
i = 1
for count in range(n) : # 列循环
x = i # 每次列循环初始阶段都给行循环的行头赋值
for j in range(n): # 行循环
if j<n-1: # 未到行尾就在每次输出的数后加空格
print(x, end=' ')
else: # 到行尾就输出行尾数并换行
print(x,end='\n')
x *= 2 # 上一次输出的数自乘2,为下一次输出的数做铺垫
i *= 2 # 每次循环结束后行头自乘2
n = 1 # 初始化临时数n
lst = [] # 初始化列表备用
while n != 0: # 以0为截止符
n = int(input())
lst.append(n) # 依次将输入数N存入列表中备用
for i in lst: # 循环输出每个N对应的二维数组M
demo(i)
print("") # 每输出完一个二维数组就输出一个空行隔开