Python小高组:年终奖与最大公约数算法实现

需积分: 5 4 下载量 35 浏览量 更新于2024-08-03 收藏 444KB PDF 举报
在2023年的全国青少年信息学奥林匹克竞赛(NOC)软件创意编程复赛中,Python小高组的题目设计涵盖了实用的编程技能。第一个问题是关于计算员工年终奖,考察了基础条件分支结构以及变量操作。 1. 年终奖计算: 根据题目描述,需要编写一个程序,根据公司年度利润(M)与员工当月工资(m)来计算年终奖。首先,我们需要判断公司的年度利润范围: - 如果 M <= 10,年终奖为工资的3倍,代码实现如下: ```python m *= 3 ``` - 如果 10 < M <= 20,年终奖为工资的5倍,这里没有直接的代码实现,但可以补全: ```python if M <= 20: m *= 5 ``` - 最后,如果 M > 20,年终奖为工资的8倍,这部分同样没有直接给出,应该补充: ```python else: m *= 8 ``` 最后,输出员工年终奖金额: ```python print(m) ``` 参考的完整代码应该是: ```python M = int(input()) m = int(input()) if M <= 10: m *= 3 elif M <= 20: m *= 5 else: m *= 8 print(m) ``` 第二个问题是关于求解两个正整数的最大公约数,采用欧几里得算法(辗转相除法)。函数`gcd(a, b)`的实现步骤如下: - 首先,交换a和b的值,确保a始终大于或等于b: ```python if a < b: a, b = b, a ``` - 使用while循环,直到b等于0(即余数为0): ```python while b != 0: ``` - 计算余数r: ```python r = a % b ``` - 更新a为b,b为r: ```python a = b b = r ``` - 当b为0时,a就是最大公约数,返回a: ```python return a ``` 完整的`gcd`函数实现: ```python def gcd(a, b): if a < b: a, b = b, a while b != 0: r = a % b a = b b = r return a a = int(input()) b = int(input()) print(gcd(a, b)) ``` 这两个问题都考察了参赛者的基本逻辑思维、条件控制以及对Python基本语法的理解和应用。同时,它们也强调了算法理解与实际编程的结合,有助于提升学生的实际编程能力和数学思维。