题目1:题目 3008: 买笔
期末来临了,班长小Q决定将剩余班费x元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。
输入格式
一个正整数x(剩余的班费)
输出格式
6元、5元和4元 的钢笔数量
样例输入
10
样例输出
1 0 1
python代码
x = int(input())
a = 0 # 6元笔的数量
b = 0 # 5元笔的数量
c = 0 # 4元笔的数量
while True:
c += 1
x -= 4
if x == -3:
c -= 2
b += 1
break
elif x == -2:
c -= 2
a += 1
break
elif x == -1:
c -= 3
a += 1
b += 1
break
elif x == 0:
break
print(a, b, c)
知识点
- 理清思路:想要买最多的笔,首先,都买成4元的,这样在钱即将用完的时候 余数会有4种情况:此时卖出4元的笔,用来买5元或6元或5、6元结合,实现暴力破解
题目2:题目 2791: 计算邮资
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。
输入格式
输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出格式
输出一行,包含一个整数,表示邮费
样例输入
1200 y
样例输出
17
python代码
import math
a,b=input().split()
a=int(a)
while True:
if a<=1000:
f=8
else:
f=8+math.ceil((a-1000)/500)*4
break
if b=='y':
f+=5
print(f)
知识点
math.ceil(x)
:返回不小于x
的最小整数
题目3:题目 2792: 三角形判断
给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。
输入格式
输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。
输出格式
如果能构成三角形,则输出“yes” ,否则输出“no”
样例输入
3 4 5
样例输出
yes
python代码
a=list(map(int,input().split()))
a.sort()
if a[0]+a[1]>a[2]:
print('yes')
else:
print('no')
知识点
- 判断三条边长度是否符合三角形有很多方法:任意两边之和大于第三边,任意两边之差小于第三边,简便方法是:看较小的两个数的和是否大于第三个数
题目4:题目 3009: 判断闰年
判断某年是否是闰年。如果公元a年是闰年输出Y,否则输出N。
输入格式
一个整数
输出格式
一行,如果公元a年是闰年输出Y,否则输出N
样例输入
2006
样例输出
N
python代码
a=int(input())
if (a%4==0)&(a%100!=0):
print('Y')
elif (a%400==0):
print('Y')
else:
print('N')
知识点
- 能被4整除,但不能被100整除的
- 能被400整除的都是闰年,其余是平年