我们都知道,只要有理数以十进制表示,结果要么是终止的,要么是(最终)周期性的。例如,以十进制表示41/42时,结果为
0.9 761904 761904 761904 761904 761904 761904 761904 ...
初始数字序列,0.9
然后是761904
一遍又一遍的序列。(对此0.9(761904)
,一种方便的表示法是括号括在重复数字的块中。)
您在此挑战中的目标是采用正有理数,删除重复序列中的第一个数字,然后返回结果有理数。例如,如果对41/42执行此操作,则得到
0.9 61904 761904 761904 761904 761904 761904 761904 ...
或0.9(619047)
简称为101/105。
如果有理数具有一个终止的十进制扩展,例如1/4 = 0.25
,则什么也不会发生。您可以将1/4 0.250000000...
或视为1/4 ,0.249999999...
但无论哪种情况,删除重复部分的第一位数字都不会改变数字。
细节
- 输入是一个正有理数,可以是代表分子和分母的一对正整数,也可以是(如果您选择的语言允许并且想要)某种有理数对象。
- 输出也是有理数,也可以是两种形式。如果结果是整数,则可以返回整数而不是有理数。
- 如果以一对数字作为输入,您可能会认为它们是相对质数的。如果产生一对数字作为输出,则必须使它们相对质数。
- 请注意,您要找到开始重复块的第一个数字。例如,可以将41/42写为,
0.97(619047)
但不会使2041/2100(带小数点扩展名0.97(190476)
)成为有效答案。 - 您可以假设在输入中,第一个周期数字在小数点后,使
120/11
=10.909090909...
无效输入:(其第一个周期数字可以视为0
in10
)。您可以在此类输入上执行任何您喜欢的操作。 - 这是代码高尔夫:最短的解决方案获胜。
测试用例
41/42 => 101/105
101/105 => 193/210
193/210 => 104/105
104/105 => 19/21
1/3 => 1/3
1/4 => 1/4
2017/1 => 2017/1
1/7 => 3/7
1/26 => 11/130
1234/9999 => 2341/9999
(2017,1)
。)
2/4
在输入中发生吗?
120/11
正确答案111/11
或210/11
?
111/11
除了目前投票率最高的答案返回之外210/11
,我将让您选择避免使现有答案无效。
2017
代替2017/1
吗?