文库 真题 NOC真题

NOC编程马拉松初中组Python复赛真题附答案

编程马拉松真题 noc题库 PDF   7页   下载1   2024-05-17   浏览191   收藏0   点赞0   评分-   免费文档
温馨提示:当前文档最多只能预览 2 页,若文档总页数超出了 2 页,请下载原文档以浏览全部内容。
NOC编程马拉松初中组Python复赛真题附答案 第1页
NOC编程马拉松初中组Python复赛真题附答案 第2页
剩余5页未读, 下载浏览全部
NOC2023 复赛初中组 1. 第⼆个字符 题⽬描述 给定⼀个字符串 ,请输出这个字符串中的第⼆个字符。 输⼊描述 共⼀⾏ ⼀个字符串 ,⾄少有 2个字符 输出描述 共⼀⾏ 这个字符串的第⼆个字符 样例输⼊ 编程真有趣! 样例输出 程 解题思路: 1. 使⽤ input() 命令输⼊⼀个字符串 2. 通过索引访问第⼆个字符 ,注意字符串索引从 0开始 1 s = input () # 输⼊ 2 print (s[ 1]) # 第⼆个字符索引 是 1 2. 勾股定理 勾股定理是⼀个⼏何定理 ,它是指直角三角形的两条直角边的平⽅和等于斜边的平⽅ 。我们可以⽤它 的逆定理来判断给定三条边⻓的三角形是否为直角三角形。 例如 ,按照从⼩到⼤的顺序给定三角形的三条边⻓ ,分别为 a、 b、 c,如果满⾜ a²+b ²=c ²,就说明这个 三角形是直角三角形 ,否则就不是直角三角形。 按照从⼩到⼤的顺序给定三角形的三条边⻓ a、 b、 c,请你判断它是否为直角三角形。如果是直角三角 形 ,就输出 “ Yes ” ,否则输出 “ No ” 。 【输⼊描述】 共⼀⾏ 三个整数 a、 b、 c,两数之间⽤逗号隔开 【输出描述】 共⼀⾏ Yes 或者 No 【输⼊样例】 3,4,5 【输出样例】 Yes 解题思路: 输⼊数据 ,得到整数列表 判断:第⼀个数的平⽅ +第⼆个数的平⽅ =第三个数的平⽅ 是否成⽴ 1 li = [int (i) for i in input ().spli t( ',' )] 2 a = li[ 0] 3 b = li[ 1] 4 c = li[ 2] 5 if a ** 2 + b ** 2 == c ** 2: 6 print ('Yes' ) 7 else : 8 print ('No' ) 3. 剪⼑⽯头布 题⽬描述 剪⼑⽯头布是⼀种猜拳游戏 ,规则简单明了 ,单次 玩法⽐拼运⽓ ,多回合玩法⽐拼⼼理博弈 ,深受世 界⼈⺠喜爱。 游戏规则:剪⼑剪布 ,布包⽯头 ,⽯头砸剪⼑。 现在需要你写⼀个程序来判断剪⼑⽯头布游戏的结果。 输⼊描述 共 N+1 ⾏ 第⼀⾏ ,⼀个整数 N( 1<= N <= 100 ) , 表 ⽰⼀共进⾏了 N次游戏 接下来 N⾏ ,每⾏包含两个字符串 ,表⽰游戏参与者 Player1 和 Player2 的选择( Scissors 、 Rock 或者 Paper ) , 字符串之间以空格隔开 提⽰: Scissors 是剪⼑ , Rock 是⽯头 , Paper 是布 输出描述 共 N⾏ 每⾏对应⼀个胜利者( Player1 或者 Player2 ) , 如果出现平局情况 ,则输出 Tie 样例输⼊ 3 Scissors Scissors Paper Rock Scissors Rock 样例输出 Tie Player 1 Player 2 解题思路: 分情况讨论: 1. 两者相同 ,则平局 2. 玩家 1⽯头 ,玩家 2剪⼑; 玩家 1剪⼑ ,玩家 2布;玩家 1布 ,玩家 2⽯头;这三种 情况均为玩家 1获胜 3. 其他情况 ,玩家 2获胜 1 n = int (input ()) # 输⼊游戏次数 n 2 for i in range (n): 3 s1, s2 = input ().split() # 输⼊ 游戏参与者 Player1 和 Player2 的选择 4 if s1 == s2: # 平局 5 print ("Tie" ) 6 elif (s1 == "Rock" an d s2 == "Scissors" ) or (s1 == "Scissors" and s2 == "Paper" ) or (s1 == "Paper" and s2 == "Rock" ): # Player1 获胜 7 print ("Player1" ) 8 else : # Player2 获胜 9 print ("Player2" ) 4. 空⼼数字矩形 题⽬描述 给定⼀个正整数 n(2 < n< 10) ,打印由数字 n和空格组成的空⼼矩形。 输⼊描述 共⼀⾏ ⼀个正整数 n(2 < n<10) 输出描述 共 n⾏ ⼀个由数字 n和空格组成的空⼼矩形 ,要求⾏和列都是 n个数字 样例输⼊ 3 样例输出 333 3 3 333 解题思路: 分⾏讨论: 先打印第⼀⾏ ,以⼀个数字⼀个空格为⼀组 ,共重复 n次 接下来打印第 2到 n-1⾏ ,所以重复执⾏ n-2次 ,每⼀⾏包含:⼀个数字 ,( 2*n-3)个空格 ,⼀个数字 最后⼀⾏和第⼀⾏⼀样 ,以⼀个数字⼀个空 格为⼀组 ,共重复 n次 1 n = int (input ()) # 输⼊ n 2 # 打印第⼀⾏ 3 print (( str (n) + ' ') * n) 4 # 打印中间 n - 2 ⾏ 5 for i in range (n - 2): 6 print (str (n) + ' ' * (2 * n - 3) + str (n)) 7 # 打印最后⼀⾏ 8 print (( str (n) + ' ') * n) 5. 发苹果 题⽬描述 今天班⾥发苹果 ,每⼈⼀个。有 N(3 <= N <= 20) 个同学没来 ,但只剩下 N-1 个苹果了。班⻓⼩刚决定放 学以后把这 N-1 个苹果发给 N-1 个同学 ,他想的办法是 :必须经过第⼀个同学和第 N个同学的家 ,给他 俩发放苹果;剩余的同学中 ,跳过⼀个同学 ,不给他发苹果 ,使得⾛的总路线最短。 依次给定第⼀个同学到第 N个同学的家的位置坐标( ⽤⼀对数字 x和 y表⽰ ), 请你计算 ⼩刚⾛的最短总 路线。 提⽰: 第 i个同学家与第 j个同学家之间的路线⻓度为 |xi -xj| + |yi -yj| 。 输⼊描述 共 N+1 ⾏ 第⼀⾏ ,整数 N(3 <= N <= 20) 第⼆⾄ N+1 ⾏ ,每⾏⼀个坐标 x和 y, x和 y均为整数 ,中间⽤空格分隔 ,表 ⽰每个同学的家的位置坐标 输出描述 共⼀⾏ ⼀个整数 ,表⽰最短路线⻓度 样例输⼊ 4 00 83 11 -1 10 0 样例输出 14 解题思路: 1. 先计算从第 1个同学家依次经过每⼀个同学家到达第 N 个同学家的总距离 2. 枚举去掉第 2到第 N -1个同学家的距离 ,对
NOC2023初中组复赛真题-含答案,NOC编程马拉松初中组Python复赛真题附答案
下载提示

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