题目描述
P 老师需要去商店买 n 支铅笔作为小朋友们参加 NOIP 的礼物。她发现商店一共有 33 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P 老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此 P 老师可能需要购买超过 n 支铅笔才够给小朋友们发礼物。
现在 P 老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 n 支铅笔最少需要花费多少钱。
输入格式
第一行包含一个正整数 n,表示需要的铅笔数量。
接下来三行,每行用 2 个正整数描述一种包装的铅笔:其中第 1 个整数表示这种包装内铅笔的数量,第 2 个整数表示这种包装的价格。
保证所有的 7个数都是不超过 10000 的正整数。
输出格式
1 个整数,表示 P 老师最少需要花费的钱。
代码如下:
from math import*
n=int(input())
a,b=map(int,input().split())
c,d=map(int,input().split())
e,f=map(int,input().split())
s1=ceil(n/a)*b
s2=ceil(n/c)*d
s3=ceil(n/e)*f
print(min(s1,s2,s3))
这道题的核心还是利用math库里的ceil函数,对计算结果进行取上,这样才能保证数量并且钱数最少否则的话就不能符合题意。
题目描述
给出三条线段 a,b,c 的长度,均是不大于 10000 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
- 如果三条线段不能组成一个三角形,输出
Not triangle
; - 如果是直角三角形,输出
Right triangle
; - 如果是锐角三角形,输出
Acute triangle
; - 如果是钝角三角形,输出
Obtuse triangle
; - 如果是等腰三角形,输出
Isosceles triangle
; - 如果是等边三角形,输出
Equilateral triangle
。
如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。
输入格式
输入 3 个整数 a、b 和 c。
输出格式
输出若干行判定字符串。
代码如下:
a,b,c=map(int,input().split())
if a>b:
a,b=b,a
if b>c:
b,c=c,b
if a+b<=c:
print('Not triangle')
else:
if a**2+b**2==c**2:
print("Right triangle")
if a**2+b**2>c**2:
print("Acute triangle")
if a**2+b**2<c**2:
print("Obtuse triangle")
if a==b :
print("Isosceles triangle")
if b==c:
print("Equilateral triangle")
这道题先利用分支结构将a,b,c三者的大小关系变成a<b<c,这样在后续进行三边比较的时候更方便,根据简单的逻辑关系我们便可以从前两个分支结构中获取a<b<c,然后再判断三边大小是否能构成三角形若不可以则输出Not triangle,否则则进行三角形的判断,首先看是否是直角三角形,切记下面每一个判断语句都是并列的,这意味着每条语句都会进行判断然后在输出相应的结果,最后重要的是后两个分支语句的判断,我们已经知道a<b<c,所以在后续判断等边或等腰的时候会更方便,比如说判断是否是等腰三角形只需判断最小的两条边是否相等,而判断等边的前提必须是两天最小的边相等,所以我们只需判断最大的一条边和小的一边是否相等即可,这样我们就会更快更方便地解决这个问题,如果你想不通里面的大小关系,不妨画个三角形试试。
感谢您的观看,希望对您能有帮助!