洛谷基础题练习6

1. 成绩

题目描述

牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:

总成绩=作业成绩 × 20% + 小测成绩 × 30% + 期末考试成绩 × 50%

牛牛想知道,这门课程自己最终能得到多少分。

输入格式

三个非负整数 A,B,C(0 ≤ A,B,C ≤ 100 且 A,B,C 都是 10 的整数倍),分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是 100 分。

输出格式

一个整数,即牛牛这门课程的总成绩,满分也是 100 100 100 分。

样例输入 #1

100 100 80

样例输出 #1

90

样例输入 #2

60 90 80

样例输出 #2

79
#include <stdio.h>

int main()
{
	int a, b, c, total;
	scanf("%d %d %d", &a, &b, &c);
	total = a * 0.2 + b * 0.3 + c * 0.5;
	if (total > 100)
		total = 100;
	printf("%d", total);
	return 0;
}

2. ABC

题目描述

三个整数分别为 A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A < B < C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

输入格式

第一行包含三个正整数 A,B,C,不一定是按这个顺序。这三个数字都小于或等于 100。第二行包含三个大写字母 A、B 和 C(它们之间没有空格)表示所需的顺序。

输出格式

在一行中输出 A,B 和 C,用一个空格隔开。

样例输入 #1

1 5 3
ABC

样例输出 #1

1 3 5

样例输入 #2

6 4 2
CAB

样例输出 #2

6 2 4
a, b, c = map(int, input().strip().split())
str1 = input().strip()
max_num = max(a, b, c)
min_num = min(a, b, c)
mid_num = a + b + c - max_num - min_num
dict_num = {'A': min_num, 'B': mid_num, 'C': max_num}
list1 = [dict_num[i] for i in str1]
print(' '.join(map(str, list1)))

3. 苹果与虫子

题目描述

八尾勇喜欢吃苹果。她现在有 m(1 ≤ m ≤ 100)个苹果,吃完一个苹果需要花费 t(0 ≤ t ≤ 100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 s(1 ≤ s ≤10000)分钟,请问她还有几个完整的苹果?

输入格式

输入三个非负整数表示 m, t, s。

输出格式

输出一个整数表示答案。

样例输入

50 10 200

样例输出

30
m, t, s = map(int, input().strip().split())
if 1 <= m <= 100 and 0 <= t <= 100 and 1 <= s <= 10000:
    left = 0
    if t > 0:
        total = m * t  # 吃完所有苹果需要的时间
        if total >= s and t > 0:
            left = (m * t - s) / t
    print(int(left))

4. Apples

题目描述

八尾勇喜欢吃苹果。她今天吃掉了 x(0 ≤ x ≤ 100) 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 1 个苹果,就输出 Today, I ate 1 apple.;如果她没有吃,那么就把 1 换成 0;如果她吃了不止一个苹果,别忘了 apple 这个单词后面要加上代表复数的 s

样例输入 #1

1

样例输出 #1

Today, I ate 1 apple.

样例输入 #2

3

样例输出 #2

Today, I ate 3 apples.
x = int(input().strip())
ch = '' if x <= 1 else 's'
print(f'Today, I ate {x} apple{ch}.')

5. 洛谷团队系统

题目描述

在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间 5 分钟;而在洛谷团队中上传私有题目,每题只需要花费 3 分钟,但是上传题目之前还需要一次性花费 11 分钟创建与配置团队。现在要配置 n 道题目,如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu

输入格式

输入一个正整数 n(1≤n≤100),表示需要配置的题目量。

输出格式

输出一行,一个字符串。如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu

样例输入 #1

2

样例输出 #1

Local

样例输入 #2

50

样例输出 #2

Luogu
n = int(input().strip())
local = n * 5
luogu = 11 + 3 * n
if local < luogu:
    print('Local')
else:
    print('Luogu')

6. 肥胖问题

题目描述

BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是
m h 2 \dfrac{m}{h^2} h2m
,其中 m 是指体重(千克),h 是指身高(米)。不同体型范围与判定结果如下:

  • 小于 18.5:体重过轻,输出 Underweight
  • 大于等于 18.5 且小于 24:正常体重,输出 Normal
  • 大于等于 24:肥胖,不仅要输出 BMI 值(使用 cout 的默认精度),然后换行,还要输出 Overweight

现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。

对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0,不要输出后缀 0。

请注意,保留六位有效数字不是保留六位小数。例如 114.5149 应该输出为 114.515,9198.10 应该输出为 9198.1。

输入格式

共一行。

第一行,共 2 个浮点数,m(40 ≤ m ≤ 120),n(1.4 ≤ h ≤ 2.0),分别表示体重(单位为 kg),身高(单位为 m)。mh 的小数点后不超过三位。

输出格式

输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight 情况的特别处理请参照题目所述。

样例输入

70 1.72

样例输出

Normal
m, n = map(float, input().strip().split())
result = m / (n * n)
if result < 18.5:
    print('Underweight')
elif 18.5 <= result < 24:
    print('Normal')
else:
    print('%.6g' % result)  # 保留6位有效数字
    print('Overweight')

7. 分类平均

题目描述

给定 n 和 k,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。

数据保证两类数的个数都不会是 0。

输入格式

输入两个正整数 n 与 k(1 ≤ n ≤ 10000,1 ≤ k ≤ 100)。

输出格式

输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。

样例输入

100 16

样例输出

56.0 50.1
n, k = map(int, input().strip().split())
count_A = 0
sum_A = 0
count_B = 0
sum_B = 0
for i in range(1, n+1):
    if i % k == 0:
        sum_A += i
        count_A += 1
    else:
        sum_B += i
        count_B += 1
avg_A = sum_A / count_A if (count_A > 0) else 0
avg_B = sum_B / count_B if (count_B > 0) else 0
print('{:.1f} {:.1f}'.format(avg_A,  avg_B))

8. 一尺之棰

题目描述

《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2,向下取整)。第几天的时候木棍的长度会变为 1?

输入格式

输入一个正整数 a(1 ≤ a ≤ 109),表示木棍长度。

输出格式

输出一个正整数,表示要第几天的时候木棍长度会变为 1。

样例输入

100

样例输出

7
import math

a = int(input().strip())
count = 1
while a != 1:
    a = math.floor(a / 2)
    count += 1
print(count)

9. 距离函数

题目描述

给出平面坐标上不在一条直线上三个点坐标 (x1,y1),(x2,y2),(x3,y3),坐标值是实数,且绝对值不超过 100.00,求围成的三角形周长。保留两位小数。

对于平面上的两个点 (x1,y1),(x2,y2),则这两个点之间的距离
d i s = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 dis=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} dis=(x2x1)2+(y2y1)2
输入格式

输入三行,第 i 行表示坐标 (xi,yi),以一个空格隔开。(坐标均为实数且绝对值不超过 100,小数点后最多仅有 3 位)

输出格式

输出一个两位小数,表示由这三个坐标围成的三角形的周长。

样例输入

0 0
0 3
4 0

样例输出

12.00
import math


def distance(x1, y1, x2, y2):
    """计算两个坐标之间的距离"""
    return math.sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2))


x1, y1 = map(float, input().strip().split())
x2, y2 = map(float, input().strip().split())
x3, y3 = map(float, input().strip().split())
dis1 = distance(x1, y1, x2, y2)
dis2 = distance(x1, y1, x3, y3)
dis3 = distance(x2, y2, x3, y3)
print('{:.2f}'.format(dis1 + dis2 + dis3))

10. 超市购物

题目描述

假如小可可一共买了 n 种类型的商品,第 i 种商品的单价为 ai 元,买了 bi 件,最后打八五折,并且舍去多出的小于一角的零头,你能不能帮他算算实际要付的钱数?

输入格式

第一行一个正整数 n(1≤n≤10),表示商品的种类数。

下面 n 行,每行一个两位小数 ai (0.01 ≤ ai ≤ 99.99)和一个整数 bi(1 ≤ bi ≤ 10),用空格隔开,分别表示第 i 种商品的单价和购买量。注意,输入中不会省略小数点后的零。

输出格式

仅一行,一个一位小数,表示小可可在打折并去分后要付的实际元数。注意,即使小数点后一位是 0,也要输出。

样例输入 #1

1
23.70 1

样例输出 #1

20.1

样例输入 #2

3
3.00 2
17.95 1
0.10 1

样例输出 #2

20.4
n = int(input().strip())
count = 0
for i in range(n):
    price, quantity = map(float, input().strip().split())
    count += price * quantity

pay = count * 0.85
ans = int(pay * 10)
print('{:.1f}'.format(ans * 1.0 / 10))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里逆天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值