GESP一级编程题学习笔记及AC程序

一、闰年求和

题目描述:小明想知道两个年份之间(不包含起始年份和终止年份)的闰年年份具体数字之和。 输入格式:输入一行,包含两个整数,分别表示起始年份和终止年份。约定年份在1到2022之间。 输出格式:输出一行,包含一个整数,表示闰年年份具体数字之和。 输入输出样例: 输入:2018 2022 输出:2020

AC代码

# 输入起始年份和终止年份,按空格分割
left, right = input().strip().split()
# 将输入的字符串转换为整数
left = int(left)
right = int(right)
# 用于存储闰年数字之和
cnt = 0
# 遍历起始年份 + 1 到终止年份 - 1 的所有年份
for i in range(left + 1, right):
    # 判断是否为闰年:非整百年能被4整除 或者 整百年能被400整除
    if (i % 100 != 0 and i % 4 == 0) or i % 400 == 0:
        cnt += i
# 输出闰年数字之和
print(cnt)

二、奇数和偶数

题目描述:小杨有n个正整数,他想知道其中的奇数有多少个,偶数有多少个。 输入格式:第一行包含一个正整数n,代表正整数个数。之后n行,每行包含一个正整数。 输出格式:输出两个正整数(英文空格间隔),代表奇数的个数和偶数的个数。如奇数或偶数的个数为0,则对应输出0。 输入输出样例: 输入: 5 1 2 3 4 5 输出:3 2

AC代码

# 输入正整数的个数n
n = int(input())
# 初始化偶数计数和奇数计数为0
oucnt = 0
jicnt = 0
# 循环n次,每次输入一个正整数并判断奇偶
for i in range(n):
    a = int(input())
    if a % 2 == 0:
        oucnt += 1
    elif a % 2 == 1:
        jicnt += 1
# 输出奇数个数和偶数个数
print(jicnt, oucnt)

三、值日

题目描述:小杨和小红是值日生,负责打扫教室。小杨每m天值日一次,小红每n天值日一次。今天他们两个一起值日,请问至少多少天后,他们会再次同一天值日? 输入格式:第一行,一个正整数m,表示小杨的值日周期;第二行,一个正整数n,表示小红的值日周期。 输出格式:一行,一个整数,表示至少多少天后他们会再次同一天值日。 输入输出样例: 输入: 4 6 输出:12

AC代码

# 输入小杨的值日周期m
m = int(input())
# 输入小红的值日周期n
n = int(input())
# 从第1天开始枚举
tian = 1
while True:
    # 判断当前天数是否同时是m和n的倍数
    if tian % m == 0 and tian % n == 0:
        # 输出结果并结束循环
        print(tian)
        break
    tian += 1

四、假期阅读

题目描述:小A有一本厚厚的书。这本书总共有n页,小A一天中最多只能阅读完其中的k页。小A的假期总共有t天,他想知道在假期中最多能阅读完这本书的多少页。 输入格式:第一行,一个正整数n,表示书的页数。第二行,一个正整数k,表示小A每天最多阅读的页数。第三行,一个正整数t,表示小A假期的天数。 输出格式:一行,一个整数,表示假期中所能阅读的最多页数。 输入输出样例: 输入1: 8 3 2 输出1:6 输入2: 19 3 30 输出2:19

AC代码

# 输入书的总页数n
n = int(input())
# 输入每天最多阅读的页数k
k = int(input())
# 输入假期天数t
t = int(input())
# 判断k*t是否不超过n,输出对应结果
if k * t <= n:
    print(k * t)
else:
    print(n)

五、四舍五入

题目描述:四舍五入是一种常见的近似计算方法。现在,给定n个整数,你需要将每个整数四舍五入到最接近的整十数。例如,43四舍五入后为40,58四舍五入后为60。 输入格式:共n + 1行,第一行,一个整数n,表示接下来输入的整数个数。接下来n行,每行一个整数a₁,⋯,aₙ,表示需要四舍五入的整数。 输出格式:n行,每行一个整数,表示每个整数四舍五入后的结果。 输入输出样例: 输入: 5 43 58 25 67 90 输出: 40 60 30 70 90

AC代码

# 输入整数的个数n
n = int(input())
for _ in range(n):
    # 输入需要四舍五入的整数
    num = int(input())
    # 取整数的个位数字
    digit = num % 10
    # 进行四舍五入到整十数
    if digit >= 5:
        rounded = (num // 10 + 1) * 10
    else:
        rounded = (num // 10) * 10
    # 输出四舍五入后的结果
    print(rounded)

六、图书馆里的老鼠

题目描述:图书馆里有n本书,不幸的是,还混入了一只老鼠,老鼠每x小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问y小时后图书馆里还剩下多少本完整的书。 输入格式:三行,第一行一个正整数n,表示图书馆里书的数量;第二行,一个正整数x,表示老鼠啃光一本书需要的时间;第三行,一个正整数y,表示经过的总时间;输入数据保证y小时后至少会剩下一本完整的书。 输出格式:一行,一个整数,表示y小时后图书馆里还剩下多少本完整的书。 输入输出样例: 输入1: 10 2 3 输出1:8 输入2: 5 2 4 输出2:3

AC代码

# 输入图书馆书的数量n
n = int(input())
# 输入老鼠啃光一本书的时间x
x = int(input())
# 输入经过的总时间y
y = int(input())
# 计算老鼠啃光的书的数量
books_eaten = y // x
# 计算剩余完整书的数量
remaining = n - books_eaten
# 输出剩余数量
print(remaining)

七、温度转换

题目描述:小杨最近学习了开尔文温度、摄氏温度和华氏温度的转换。令符号K表开尔文温度,符号C表摄氏温度,符号F表华氏温度,这三者的转换公式如下: C = K - 273.15 F = C × 1.8 + 32 现在小杨想编写一个程序计算某一开尔文温度对应的摄氏温度和华氏温度,你能帮帮他吗? 输入格式:一行,一个实数K,表示开尔文温度。 输出格式:一行,若输入开尔文温度对应的华氏温度高于212,输出Temperature is too high!;否则,输出两个由空格分隔的实数C和F,分别表示摄氏温度和华氏度,保留两位小数。 输入输出样例: 输入1:412.00 输出1:Temperature is too high! 输入2:173.56 输出2:-99.59 -147.26

AC代码

# 输入开尔文温度,转换为浮点数
k = float(input())
# 计算摄氏温度
c = k - 273.15
# 计算华氏温度
f = c * 1.8 + 32
# 判断华氏温度是否高于212,输出对应结果
if f > 212:
    print("Temperature is too high!")
else:
    # 格式化输出,保留两位小数
    print(f"{c:.2f} {f:.2f}")

八、美丽数字

题目描述:小杨有n个正整数,他认为一个正整数是美丽数字当且仅当该正整数是9的倍数但不是8的倍数。小杨想请你编写一个程序计算n个正整数中美丽数字的数量。 输入格式:第一行包含一个整数n,代表正整数个数。第二行有n个正整数a₁,a₂,...,aₙ。 输出格式:输出一个整数,表示其中美丽数字的数量。 输入输出样例: 输入: 3 1 9 72 输出:1

AC代码

# 输入正整数的个数n
n = int(input())
# 输入n个正整数,转换为列表
nums = list(map(int, input().split()))
# 初始化美丽数字计数为0
beautiful_count = 0
for num in nums:
    # 判断是否是9的倍数且不是8的倍数
    if num % 9 == 0 and num % 8 != 0:
        beautiful_count += 1
# 输出美丽数字的数量
print(beautiful_count)

0 条评论

目前还没有评论...