任务:
您的程序将使用格式正确的,正的简单分数<numerator>/<denominator>
。
对于此输入,它必须找到两个分数。
- 小于输入的分数。
- 大于输入的分数。
两个分数的分母都必须小于输入的分母。在所有可能的分数中,它们与输入的差异应该最小。
输出:
程序的输出必须为:
- 小于输入的小数,格式为
<numerator>/<denominator>
。 - 后面跟一个空格字符(ASCII码32)。
- 后跟一个大于输入的小数,格式为
<numerator>/<denominator>
。
如下:
«fraction that is < input» «fraction that is > input»
规则:
- 输出的所有分数必须使用最低的术语。
- 输出的所有分数必须是正确的分数。
- 如果规则没有允许的任何适当分数,则必须输出
0
而不是分数<输入,而1
不是分数>输入。 - 您可以选择是要接收分数作为命令行参数(例如
yourprogram.exe 2/5
)还是提示用户输入。 - 您可能会认为您的程序不会收到无效的输入。
- 最短的代码(以任何语言表示的字节数)为准。
任何非标准的命令行参数(运行脚本通常不需要的参数)都计入总字符数。
您的程序不得执行的操作:
- 取决于任何外部资源。
- 取决于具有特定的文件名。
- 输出所需输出以外的任何内容。
- 需要非常长的时间才能运行。如果您的程序在一分钟的
179565/987657
时间内用普通家庭用户的计算机上的分数用6位数字的分子和分母(例如)运行一分钟,则它无效。 - 输出分数以
0
作为分母。你不能被零除。 - 输出分数
0
作为分子。您的程序必须输出0
而不是小数。 - 减少输入分数。如果作为输入给出的分数是可约的,则必须使用输入的分数。
- 发布此挑战之前,不得使用没有公开可用的编译器/解释器的编程语言来编写您的程序。
例子:
输入: 2/5
输出: 1/3 1/2
输入: 1/2
输出: 0 1
输入: 5/9
输出: 1/2 4/7
输入: 1/3
输出: 0 1/2
输入: 2/4
输出: 1/3 2/3
输入: 179565/987657
输出: 170496/937775 128779/708320
1/3 1/2
。