L1-040 最佳情侣身高差 (10 分)[java][python]
·
题目信息
- 题目编号:L1-040
- 题目名称:最佳情侣身高差
- 题目分数:10分
- 作 者:陈越
- 单 位:浙江大学
题目描述
专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。
输入格式
输入第一行给出正整数 N(≤10),为前来查询的用户数。随后 N 行,每行按照"性别 身高"的格式给出前来查询的用户的性别和身高,其中"
性别"为 F 表示女性、M 表示男性;"身高"为区间 [1.0, 3.0] 之间的实数。
输出格式
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后 2 位。
样例
输入样例:
2
M 1.75
F 1.8
输出样例:
1.61
1.96
解题思路
本题是一道简单的数学计算题,核心在于理解题意并正确处理浮点数运算。
核心公式
- 如果用户是 男性(M):情侣身高 = 男方身高 ÷ 1.09
- 如果用户是 女性(F):情侣身高 = 女方身高 × 1.09
算法步骤
- 读取查询人数 N
- 循环 N 次,每次:
- 读取性别 gender 和身高 height
- 根据性别计算:
- M → 输出
height / 1.09 - F → 输出
height × 1.09
- M → 输出
- 使用格式化输出保留两位小数
注意事项
- 身高单位是米(m),范围 [1.0, 3.0]
- 输出必须保留两位小数
- 使用 double/float 类型进行计算
Java实现
import java.util.Scanner;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
DecimalFormat df = new DecimalFormat("0.00");
for (int i = 0; i < n; i++) {
String gender = sc.next();
double height = sc.nextDouble();
double result = gender.equals("M") ? height / 1.09 : height * 1.09;
System.out.println(df.format(result));
}
}
}
Python实现
n = int(input())
for _ in range(n):
gender, height = input().split()
height = float(height)
result = height / 1.09 if gender == 'M' else height * 1.09
print(f"{result:.2f}")
运行验证
以样例输入验证:
- 输入:
2,M 1.75,F 1.8 - M 1.75 → 1.75 / 1.09 = 1.6055 → 1.61
- F 1.8 → 1.8 × 1.09 = 1.962 → 1.96
- 输出:
1.61,1.96验证通过!
复杂度分析
| 指标 | 复杂度 |
|---|---|
| 时间复杂度 | O(N) |
| 空间复杂度 | O(1) |
总结
本题考查简单的数学运算和条件判断,关键点在于:
- 理解最佳情侣身高差的计算公式
- 根据性别分别处理(除以或乘以1.09)
- 正确保留两位小数输出
更多推荐




所有评论(0)