我正在为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);
}
它输出的分数不正确,但是我想要一个混合数。我怎么能得到这个?附言英语不是我的母语。
答案 0 :(得分:2)
由于这是挑战的一部分,所以我将避免提供确切的答案,但我要重点关注的是:混合数是整数,后跟适当的分数。您的分数不正确。您如何将不正确的分数转换为带分数?
让我们举一个简单的例子,例如11/4
。我们如何将其写成混合分数?我们之所以写2 3/4
,是因为:
2
是小于11/4的最大整数。2
为8/4,将3/4保留为适当的分数。2
,适当的分数为3/4
,为我们提供了答案。因此,在分数n/d
不正确的情况下,获得混合数字的一种方法是取k = floor[n/d]
,然后返回k + (n - kd)/d
。
希望有帮助!