小M的奶酪问题 | 豆包MarsCode AI刷题

62 阅读3分钟

题目分析

题目给定了一个情境:小M买了一公斤奶酪,且小F偷偷地偷走了其中的 AB\frac{A}{B}BA 公斤奶酪。我们的任务是计算小M剩余的奶酪数量,并且要求输出的结果必须以分数形式表示,且分母是 BBB。

例如,若小M买了一公斤奶酪(即1公斤),小F偷走了其中的 AB\frac{A}{B}BA 公斤,那么小M剩下的奶酪就可以表示为 1−AB1 - \frac{A}{B}1−BA。

解决思路

我们可以从以下几个步骤来解决这个问题:

  1. 计算剩余的奶酪量
    • 原来小M拥有 1 公斤奶酪,即 1=BB1 = \frac{B}{B}1=BB。
    • 小F偷走了 AB\frac{A}{B}BA 公斤奶酪,因此剩下的奶酪量就是: 剩余奶酪=1−AB=BB−AB=B−AB\text{剩余奶酪} = 1 - \frac{A}{B} = \frac{B}{B} - \frac{A}{B} = \frac{B - A}{B}剩余奶酪=1−BA=BB−BA=BB−A 这就是我们需要输出的剩余奶酪的分数。
  2. 返回分数形式
    • 我们需要将结果以字符串形式返回,格式为 "B-A/B"

代码实现

java复制代码public class Main {
    public static String solution(int A, int B) {
        // 计算剩余的奶酪量,以分数形式表示
        int remain = B - A; // 剩余的奶酪数量(分子)
        
        // 使用StringBuilder来拼接返回值
        StringBuilder result = new StringBuilder();
        
        // 将结果按照“分子/分母”的格式添加到StringBuilder中
        result.append(remain);  // 添加分子(剩余的奶酪)
        result.append("/");     // 添加分隔符"/"
        result.append(B);       // 添加分母(总量B)
        
        // 将StringBuilder转换为字符串并返回
        return result.toString();
    }

    public static void main(String[] args) {
        // 进行几个测试
        System.out.println(solution(2, 7).equals("5/7")); // 2/7被偷走,剩下5/7
        System.out.println(solution(1, 3).equals("2/3")); // 1/3被偷走,剩下2/3
        System.out.println(solution(3, 5).equals("2/5")); // 3/5被偷走,剩下2/5
    }
}

代码解释

  1. solution 方法
    • AB 是输入的两个整数,表示小F偷走的奶酪的分数部分 AB\frac{A}{B}BA。
    • 我们计算剩余奶酪量 remain = B - A,然后将其表示为一个分数 remain/B
    • 使用 StringBuilder 来构造结果字符串,首先添加分子 remain,然后是斜杠 /,最后是分母 B
    • 返回拼接好的结果字符串。
  2. main 方法
    • 进行了一些简单的测试,确保程序正确计算了剩余奶酪量,并且按预期返回了结果。

测试

通过测试几个不同的案例来验证代码的正确性:

  • 当 A=2A = 2A=2, B=7B = 7B=7 时,剩余奶酪为 7−27=57\frac{7 - 2}{7} = \frac{5}{7}77−2=75,返回 "5/7"
  • 当 A=1A = 1A=1, B=3B = 3B=3 时,剩余奶酪为 3−13=23\frac{3 - 1}{3} = \frac{2}{3}33−1=32,返回 "2/3"
  • 当 A=3A = 3A=3, B=5B = 5B=5 时,剩余奶酪为 5−35=25\frac{5 - 3}{5} = \frac{2}{5}55−3=52,返回 "2/5"

复杂度分析

  • 时间复杂度:由于我们仅仅是进行了一次简单的算数计算和字符串拼接,因此时间复杂度为 O(1)O(1)O(1)。
  • 空间复杂度:我们使用了一个 StringBuilder 来拼接结果,空间复杂度也是 O(1)O(1)O(1)。

总结

本题的关键在于理解如何表示剩余的奶酪量并以分数形式返回。通过简单的算数运算和字符串拼接,可以快速地得到答案。这种题目对于练习分数计算和字符串操作是非常有帮助的。