题目信息

  • 题目编号: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

算法步骤

  1. 读取查询人数 N
  2. 循环 N 次,每次:
    • 读取性别 gender 和身高 height
    • 根据性别计算:
      • M → 输出 height / 1.09
      • F → 输出 height × 1.09
    • 使用格式化输出保留两位小数

注意事项

  • 身高单位是米(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. 理解最佳情侣身高差的计算公式
  2. 根据性别分别处理(除以或乘以1.09)
  3. 正确保留两位小数输出
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐