第4章-17 水仙花数(20 分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。
本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤5)
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
153
370
371
407
答案样例:
def narcissistic(n):
for i in range(pow(10,n-1),pow(10,n)):
b = i
i = list(map(int,str(i)))
a = sum(list(map(lambda a:pow(a,n),i)))
if a == b:
print(b)
narcissistic(int(input()))
第4章-18 猴子选大王
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
输入格式:
输入在一行中给一个正整数N(≤1000)。
输出格式:
在一行中输出当选猴王的编号。
输入样例:
11
输出样例:
7
答案样例:
n = int(input())
l = [a for a in range(1,n+1)]
index = 0
count = 0
while len(l) > 1:
count += 1
if index >= len(l):
index = 0
if count == 3:
count = 0
l.pop(index)# 删掉报3的猴子
index -= 1# 由于删掉了一个猴子所以下标要-1
index += 1
print(l[0])
第4章-19 矩阵运算
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例:
35
答案样例:
n = int(input())
s = 0
count = 0
l = []
for i in range(n):
l.append(list(map(int,input().split())))
for i in range(n-1):# 直接不遍历最后一行
for j in range(n):
if j == n-i-1 or j == n-1:# n-i-1是对角线的下标,n-1是最后一列的下标
continue
else:
s += l[i][j]
print(s)
第4章-20 求矩阵各行元素之和
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间
以空格分隔。
输出格式:
每行输出对应矩阵行元素之和。
输入样例:
3 2
6 3
1 -8
3 12
输出样例:
9
-7
15
答案样例:
a,b = input().split()
a,b = int(a),int(b)
for i in range(a):
print(sum(map(int,input().split())))
第4章-21 判断上三角矩阵
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
输入格式:
输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。
输入样例:
2
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
输出样例:
YES
NO
答案样例:
a = int(input())
for i in range(a):
b = int(input())
l = []
for i in range(b):
l.append(list(map(int,input().split())))
flag = True
for j in range(1,b):# 第一行不做判断
for h in range(b):
if h >= j:
break
if l[j][h] != 0:
flag = False
if flag:
print('YES')
else:
print('NO')