如何将 Java 中的假分数转换为带分数?

How do I convert an improper fraction to a mixed number in Java?

我正在尝试 2002 年挑战赛的 ccc j4 或 s2。我目前有一个函数可以简化分数,但它给出的是带分数。该函数的输出是一个字符串,我想我需要另一个函数将其转换为带分数。任何帮助,将不胜感激。谢谢!

这是我用来转换的函数:

public static long gcm(long a, long b) {
  return b == 0 ? a : gcm(b, a % b);
}

public static String asFraction(long a, long b) {
  long gcm = gcm(a, b);
  return (a / gcm) + "/" + (b / gcm);
}

输出假分数,但我想要带分数。我怎样才能得到这个? P.S。英语不是我的母语。

由于这是挑战的一部分,我不会提供确切的答案,但我要关注的是:带分数是一个整数后跟一个适当的分数。你有一个不正确的分数。如何将假分数转换为带分数?

举个简单的例子,11/4。我们如何将其写成带分数?我们会写 2 3/4,因为:

  • 2是小于11/4的最大整数。
  • 2是8/4,剩下3/4为真分数。
  • 因此整数部分是2,真分数是3/4,给我们答案。

因此,给定一个假分数 n/d,获得带分数的一种方法是采用 k = floor[n/d] 和 return k + (n - kd)/d.

希望对您有所帮助!