浙大版《Python 程序设计》题目集第4章-17——第4章-21

第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')

猜你喜欢

转载自blog.csdn.net/hmh4640219/article/details/113579269