文库 真题 NOC真题

2023年NOC决赛小高组Python真题

NOC小高组真题 noc决赛真题 PDF   9页   下载1   2024-05-03   浏览189   收藏0   点赞0   评分-   免费文档
温馨提示:当前文档最多只能预览 2 页,若文档总页数超出了 2 页,请下载原文档以浏览全部内容。
2023年NOC决赛小高组Python真题 第1页
2023年NOC决赛小高组Python真题 第2页
剩余7页未读, 下载浏览全部
2023年 NO C 灯的开关 编程实现 : 现在有n盏 灯,都是亮着的,编号为1到 n, 每 盏 灯都有 的倍数的灯的开关,再按 关,再按 输 输 ,代表有n盏 灯。 输出描述 输出仍然亮着的灯有多少盏。 输 10 输 出样例 6 参考代码 n = int (input ()) ls = [ 1 for i in range (n+ 1)] cnt = 0 for i in range (1, n+ 1): if i % 2 == 0: ls[i] = -ls[i] if i % 3 == 0: ls[i] = -ls[i] if i % 4 == 0: ls[i] = -ls[i] if i % 5 == 0: ls[i] = -ls[i] if ls[i] == 1: cnt += 1 print (cnt) 算 式 编程实现 : 有 +、 -、 *、 /其 中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 例:输 2 * 3 = 6 , a为 2, b为 3, c为 6; 2 * 4 = 8 , a为 2, b为 4, c为 8; 3 * 2 = 6 , a为 3, b为 2, c为 6; 4 * 2 = 8 , a为 4, b为 2, c为 8。 输 输 输 出描述 输 出算式有多少种可能。 输 * 输出样例 4 参考代码 op = input () cnt = 0 for a in range (1, 10 ):     for b in range (1, 10 ):         if a == b:             continue         if op == '+' :             c = a + b         elif op == '-' :             c = a - b         elif op == '*' :             c = a * b         elif op == '/' :             if a % b == 0:                 c = int (a / b)             else :                 continue         if c >= 1 and c <= 9 and c != a and c != b:             cnt += 1 print (cnt) 植 物 编程实现 : 为了应对僵 要选取攻击 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 输 第 输 两 个正整数n 和k, 中间 ,表示 有n种 植物可供选择(1 ≤ n≤50 ) , 击 ≤ k≤100 ) 。 第 输出描述 输出达到 输 3 1 0 5 2 3 输 出样例 1 参考代码 n, k = [ int (i) for i in input ().split()] attack = [ int (i) for i in input ().split()] dp = [ 0] * (k + 1) dp[ 0] = 1 for i in range (1, n + 1): for j in range (k, attack[i- 1]- 1, - 1): dp[j] += dp[j-attack[i- 1]] print (dp[k]) 连 连看 编程实现 : 现在有 就会合成 积分。经过多次操作后,最后只剩 获得多少分? 例如:场上有3张 卡牌,分数分别为10分 、23分 、5分 ,将10分 卡牌与23分 卡牌合成,可得到 33分 卡牌,再将33分 卡牌与5分 卡牌合成, 可得到38分 卡牌,获得总分数为33+ 38= 71分 为最多 的分数。 输 第 ≤ n≤ 10000) 。 第 开。 输出描述 输出最多可以获得的分数。 输 3 1 2 3 4 5 6 7 8 9 10 10 2 3 5 输 出样例 71 参 考代码 n = int (input ()) nums = [ int (i) for i in input ().split()] nums.sort() res = 0 while len (nums) > 1:     a = nums.pop()     b = nums.pop()     res += a + b     nums.append(a + b) print (res) # 法 2 : n = int (input ()) nums = [ int (i) for i in input ().split()] nums.sort() res = 0 for i in range (n): res += nums[i] * (i + 1) print (res - nums[- 1]) 地 宫宝藏 编程实现 : 现有地宫 值的宝藏,由于机关设置,你每取 给出房间的数量n和 每个房间的宝藏价值,请问你最多能拿 输 第 ≤ n≤100 ) 。 第 输出描述 输出最多可以获得的宝藏价值。 输 4 10 3 7 1 3 输 出样例 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 参考代码 n = int (input ()) ls = [ int (i) for i in input ().split()] def check (nums ):     n = len (nums)     if n == 1:         return nums[ 0]     dp = [ 0] * n     dp[ 0] = nums[ 0]     dp[ 1] = max (nums[ 0], nums[ 1])     for i in range (2, n):         dp[i] = max (dp[i - 2] + nums[i], dp[i - 1])     return dp[- 1]     if n == 1:     print (ls[ 0]) else :     print (max (check(ls[ 0:n - 1]), check(ls[ 1:]))) 编 程实现 为了迎接新同学,学校 位置,这些位置从左到右排成 建城堡的某种结构。然 下,发现 之和)。 到相邻编号的位置上。请帮同学们规划 bi 变 成 a i。 输 输 第 第 第 三 输出描述 输出 输 5 1 2 3 4 5 3 1 2 5 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 输出样例 4 参考代码 n = int (input ()) a = [ int (i) for i in input ().split()] + [ 0] b = [ int (i) for i in input ().split()] for i in range (n): a[i] -= b[i] ans = 0 for i in range (n): ans += abs (a[i]) a[i+ 1] += a[i] print (ans) 编 程实现 树或者是 视作全部是空地。 在 左、右 如果另
2023年NOC小高组决赛Python真题
下载提示

下载及版权说明:6547网文库内容来自网络及各平台公开内容(属于用户上传,不保证正确性,只做参考),旨在帮助同学们学习少儿编程相关知识及内容,仅限内部学习及使用,以分享为主,下载本文档之后请合法使用相关、真题、素材、课件、教程等内容,若内容存在侵权,请进行 举报 及查看 免责声明