试卷 2023年NOC大赛_Python软件创意编程赛项_复赛_初中组真题(忽略分值)
2023年NOC大赛_Python软件创意编程赛项_复赛_初中组真题(忽略分值)
编程题
第 1 题    问答题

出租车费用

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

根据乘坐出租车的里程,计算应该支付的费用。

出租车根据行驶里程阶梯式计价,具体规则如下表:

请补全下面程序,使程序实现如下功能:

(1)程序开始运行后,输入一个正整数,表示乘坐出租车的里程数;

(2)根据规则计算并输出乘坐出租车应该支付的费用,结果保留一位小数。

d = int(input())

if __________:

    cost = d * 2

__________

    cost = __________

else:

    cost = __________

print('%.1f' % cost)

第 2 题    问答题

和的结果数

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

请补全下面程序,使程序实现如下功能:

(1)输入n(2≤n≤100)个整数,整数之间以空格隔开,并保证n个数各不相同;

(2)从这n个数中任选两个,计算并输出任意两个数的和共有多少种不同结果。

例如:

输入一组整数1 3 4 6,任意两数和可能为4(1+3)、5(1+4)、7(1+6 或 3+4)、9(3+6)、10(4+6),因此,输出结果应为5。

ls = [int(i) for i in input().split()]

results = []

for i in range(_______):

    for j in range(_______):

        s = ls[i] + ls[j]

        if s not in results:

            _____________


print(len(results))

第 3 题    问答题

因数和个数

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

把一个数的因数全加在一起,叫做这个数的因数和。例如,6的因数有1、2、3、6,则它的因数和为1 + 2 + 3 + 6 = 12。

请编写一段程序,输入一个正整数n(n≤1000),判断因数和为n的正整数有多少个,并依次输出这些正整数。

输入描述:

输入一个正整数n(n≤1000)

输出描述:

第一行输出一个正整数,表示因数和为n的正整数的数量,如不存在,则输出0

如果存在,则第二行由小到大输出所有符合条件的数,数字之间以空格隔开


输入样例1:

12

输出样例1:

2
6 11

样例说明1:

因数和为12的正整数有2个,分别是6和11


输入样例2:

10

输出样例2:

0

样例说明2:

因数和为10的正整数不存在,所以仅输出0

第 4 题    问答题

单词变复数

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

英语单词在变成复数形式时,有以下几种常见情况(不完全):

(1)常规情况下结尾直接加s;

(2)以s、sh、ch、x结尾的单词,加es;

(3)以辅音字母加上y结尾的单词,去掉y加ies;

(注:英文字母中,除了a、e、i、o、u这5个元音字母外,其他都是辅音字母)

请编写一段程序,输入n(1≤n≤1000)个英文单词(单数,仅包含小写字母),并按以上规则变成复数形式。

输入描述:

输入n(1≤n≤1000)个英文单词(单数,仅包含小写字母),单词之间以空格隔开

输出描述:

输出这组单词按以上规则变成的复数形式,单词之间以空格隔开


输入样例:

teacher box butterfly

输出样例:

teachers boxes butterflies
第 5 题    问答题

啤酒兑换

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

某啤酒品牌正在举办一次促销优惠活动。凭3个啤酒瓶可以再换一瓶啤酒,凭5个瓶盖也可以再换一瓶啤酒,换来的啤酒可以继续换,但不允许赊账。

请编写一段程序,计算一个人初始买入n(1≤n≤100)瓶啤酒后,最终他最多能得到多少瓶啤酒,并将这个结果输出。

输入描述:

输入一个正整数n,表示初始买入的啤酒瓶数(1≤n≤100)

输出描述:

输出一个正整数,表示最终能得到的啤酒数


输入样例:

10

输出样例:

19
第 6 题    问答题

反转递增串

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

编写一段程序,输入一个n(2≤n≤1000)位正整数,将其中所有递增数字子串进行反转。

例如,正整数12387645包含两个递增数字子串1238和45,将这两部分进行反转,得到最终的83217654。

输入描述:

输入一个n(2≤n≤1000)位正整数

输出描述:

输出一行,为将输入中所有递增数字子串进行反转的结果


输入样例1:

12387645

输出样例1:

83217654


输入样例2:

87654321

输出样例2:

87654321
第 7 题    问答题

包围黑子块

时间限制:1s

内存限制:128mb

(注:input()括号中不允许添加任何提示语)

小张发明了一种新式的棋类游戏——战斗棋。在“战斗棋”中,棋子分为黑、白两色。有一条重要的规则叫做“包围败地”。即,横竖相连的同色棋子算成一块棋,一块棋被对方棋子横竖包围起来就算一块“败地”,棋盘边角也算是包围。

现有一片战斗棋区域,包含N * M(1≤N≤100,1≤M≤100)个落子点,所有落子点均摆满了棋子,其中1代表黑子、0代表白子。

请编写一段程序,计算并输出这片区域中被包围的黑色败地数量。

输入描述:

第一行输入2个正整数N和M(1≤N≤100,1≤M≤100),N表示区域的行数,M表示区域的列数,正整数之间以一个空格隔开

接下来的N行每行包括M个数字(数字只能为1或0),1表示黑子,0表示白子,数字之间以一个空格隔开

输出描述:

输出一个正整数,表示N * M的区域中被包围的黑色败地数量


输入样例:

5 3
1 0 1
0 1 0
0 1 0
1 0 1
0 0 0

输出样例:

5
答题卡
编程题
1 2 3 4 5 6 7
题目总数:7
总分数:100
时间:不限时
QQ
公众号
客服
扫一扫