选择题

1、下列二进制中最大数是()

  • A 110
  • B 1010
  • C 1100
  • D 1001

2、以下方法,不是对文件读操作的是()

  • A readline()
  • B readlines()
  • C readtext()
  • D read()

3、以下对turtle库中函数描述正确的是()

  • A goto()函数设置当前画笔移动到原点位置
  • B pensize()函数设置画笔的移动速度
  • C setup()函数定义窗体的大小和相对位置
  • D hideturtle()函数是将海龟显示

解析:

  • turtle.goto(x,y):让海龟沿着绝对坐标进行运动
  • turtle.pensize():设置线条的粗细
  • turtle.setup(width,height,startx,starty):设置窗体大小及位置
  • turtle.hideturtle() :隐藏 turtle ,使其不可见

4、以下选项中,对random.uniform(a,b)语句表达正确的是()

  • A 随机生成一个a到b之间的整数
  • B 随机生成一个a到b之间的浮点数
  • C 随机生成一个a到b之外的整数
  • D 随机生成一个a到b之外的浮点数

5、下列表达式在遍历字典d时,变量x代表字典值是()

  • A for X in d:
  • B for x in d.keys():
  • C for x in d.items():
  • D for x in d.values():

操作题

第一题(初中高级组均要考)

统计111NNN之间所有正整数中个位数为000的有几个?

例如:N=21N=21N=21时,111212121之间所有的正整数中个位数为000的数有222个,分别为:10,2010,2010,20

输入描述

输入一个正整数NNN

输出描述

输出111NNN之间(包含NNN)所有正整数中个位数为000的有几个。

输入样例

21

输出样例

2

代码实现

n = int(input())
ans = 0
for i in range(1, n + 1):
    if i % 10 == 0:
        ans += 1
print(ans)   

第二题(初中高级组均要考)

输入多个英文单词(单词都为小写字母),然后按字典顺序排序输出。

单词首字母相同时就比较第二个字母,以此类推。

输入描述

输入多个由小写仪母组成的英文单词,单词之间以一个英文逗号隔开。

输出描述

按字典顺序排序输出,且单词之间以一个英文逗号隔开

输入样例

python,hello,world

输出样例

hello,python,world

代码实现

a = list(input().split(','))
a.sort()
print(','.join(a))

第三题(初中高级组均要考)

小蓝和小青在玩积木搭建游戏,具体玩法如下:

  • 小蓝报一个数字N,代表高楼的高度,小青则需要使用最少的积木建出高度大于N的高楼

给出小蓝所报出的数字N,及已有积木块每一块的高度,请你帮助小青找出最少需要多少块积木可以搭建出高度大于N的高楼。例如:N=12N=12N=12时,已有444个积木块的高度分别为4,7,8,44,7,8,44,7,8,4则最少需要222块积木,可以使格建的高楼高度大于121212222块积木为777888

输入描述

第一行输入一个正整数NNN,表示小蓝报出的数字。
第二行输入多个正整数,表示已有积木块每一块的高度,正整数之间以一个英文逗号隔开。(要求所有正整数之和大于NNN

输出描述

输出最少需要使用多少块积木,可以搭建出高度大于NNN的高楼。

输入样例

12
4,7,8,4

输出样例

2

代码实现

n = eval(input())
a = list(eval(input()))
a.sort(reverse = True)
ans = 0
for x in a:
    n -= x
    ans += 1
    if n < 0: 
        break
print(ans)

第四题(初中高级组均要考)

NNN个小朋友围成一圈(N≤60N\le60N60),并按照顺序进行编号(编号111NNN),然后从编号为111的小朋友开始持续报数,当报到的数字中含333或者数字是333的倍数的小朋友,不能报数字而是报“过”(例如:3,6,13,313,6,13,313,6,13,31这些数字都报“过”)。

一次游戏中,小朋友们玩的不亦乐乎,突然有小朋友发现前边报过的数字中已经有报错的,而后边小朋友还在继续报数。请你帮助小朋友找出第一次报错的小朋友是编号几。

例如:有333个小朋友,编号为1,2,31,2,31,2,3。编号111的小朋友报111、编号222的小朋友报222、编号333的小朋友报“过“,编号111的小朋友报444,编号222的小朋友报555、编号333的小朋友报666、编号111的小朋友报777。此时第一次报错的小朋友为编号333。因为编号333的小朋友应该报“过“时,报成了666,而666333的倍数。

输入描述

第一行输入一个正整数NNN,表示小朋友的人数。

第二行输入一组有错的报数序列(使用000表示含333或者是333的倍数的数字),序列元素之间以一个英文逗隔开。

输出描述

输出第一次报错的小朋友是编号几。

输入样例

3
1,2,0,4,5,6,7

输出样例

3

代码实现

n = eval(input())
a = list(eval(input()))
ans = 0 # 出错小朋友编号
for i in range(len(a)):
    c = i + 1 # 正确报数
    if c % 3 == 0 or "3" in str(c):
        c = 0
    if c != a[i]: # 出错了
        ans = i % n + 1 #出错小朋友的编号
        break
print(ans)

第五题(初中高级组均要考)

NNN个正整数,现对NNN个正整数进行不同方式的排列,每次排列后都会按照以下规则进行一次计算,聪明的小蓝发现,排列方式不同,最后计算出的结果也不相同。

计算规则:

  • 第一次:第一个数乘以第二个数乘以第三个数,结果记录为M(1)M(1)M(1)
  • 第二次:第二个数乘以第三个数乘以第四个数,结果记录为M(2)M(2)M(2);
  • 第三次:第三个数乘以第四个数乘以第五个数,结果记录为M(3);M(3);M(3);
  • N−2N-2N2次:第N−2个N-2个N2数乘以第N−1N-1N1个数乘以第NNN个数,结果记录为M(N−2)M(N-2)M(N2)

最后计算M(1)+M(2)+M(3)..….M(N−2)M(1)+M(2)+M(3)..….M(N-2)M(1)+M(2)+M(3)...M(N2)的数值。找出一种排列方式使这个数值最大。

例如:N=4N=4N=4444个正整数分别为1,2,3,41,2,3,41,2,3,4,那么排列方式就会有242424种,其中排列方式为1,3,4,21,3,4,21,3,4,2时,按照规则计算222次:1×3×4=121\times3\times4=121×3×4=12
3×4∗2=243\times4*2=243×42=24,乘积相加:12+24=3612+24=3612+24=36这种排序方式是所有乘积相加的数值最大,为363636

输入描述

输入NNN个正整数(KaTeX parse error: Undefined control sequence: \leN at position 2: 3\̲l̲e̲N̲),正整教之间一个英文逗号隔开。

输出描述

找出所有乘积相加的数值最大的排列方式,并输出数值

输入样例

1,2,3,4

输出样例

36

代码实现

import itertools # 迭代器,python内置模块
a = list(eval(input()))
n = len(a)
ans = 0 
permutations = itertools.permutations(a) # 生成a的排列
for b in permutations:
    s = 0
    for i in range(n - 2):
        s += b[i] * b[i + 1] * b[i + 2]
        ans = max(ans, s)
print(ans)

第六题(中高级组均要考)

有一块农田被划分为N×MN\times MN×M块,农作物和杂草分布生长在农田中,其中农作物使用大写字母RRR表示,杂草使用大写字母XXX表示。

请计算出农田中有几块独立的农作物区域(独立的农作物区域指该区域上下左右都被杂草围住,且N×MN\times MN×M以外的区域都是杂草)。

例如:N=4,M=4,4×4N=4,M=4,4\times4N=4,M=4,4×4的农田中农作物和杂草分布如下图,这块4×44\times44×4的农田中有333块独立的农作物区域(红色的3部分)。
在这里插入图片描述

输入描述

第一行输入两个整数NNNMMM1≤N≤100,1≤M≤1001\le N\le100,1\le M\le1001N1001M100),NNN表示农田的行数,MMM表示农田的列数,且两个正整数之间以一个英文逗号隔开。

接下来的NNN行每行包括MMM个字符(字符只能为RRRXXX),RRR表示农作物,XXX表示杂草,字符之间以一个英文逗号隔开。

输出描述

输出一个整数,表示N×MN\times MN×M的农田中有几块独立的农作物区域

输入样例

4,4
R,R,R,X
R,X,R,X
X,X,X,R
R,X,X,X

输出样例

3

代码实现

# 输入
n, m = eval(input())
g = []
for i in range(n):
    g.append(list(input().split(',')))
ans = 0
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# 广度优先搜索
def bfs(x, y):
    q = []
    g[x][y] = 'X' # flood fill
    q.append((x, y))
    while len(q) != 0:
        x, y = q[0]
        q.pop(0)
        for i in range(4):
            a = x + dx[i]
            b = y + dy[i]
            # 越界检查
            if a < 0 or a >= n or b < 0 or b >= m:
                continue
            # 合法性检查
            if g[a][b] == 'X':
                continue
            g[a][b] = 'X' # flood fill
            q.append((a, b))
# 统计连通块个数
for i in range(n):
    for j in range(m):
        if g[i][j] == 'R':
            ans += 1
            bfs(i, j)
print(ans)
        
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐