Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Google:以字符串形式分割并返回结果_C_String_Algorithm_Division - Fatal编程技术网

C Google:以字符串形式分割并返回结果

C Google:以字符串形式分割并返回结果,c,string,algorithm,division,C,String,Algorithm,Division,我最近遇到了谷歌提出的一个面试问题,我无法找到一个优化算法来解决这个问题: 给定2个数字a和b。将a和b分开,并以字符串形式返回结果 例1 Input: a=100 , b=3 Output: 33.(3) Note: (100/3)=33.33333....Here 3 is in brackets because it gets repeated continuously. 例2 Input: a=5 , b=10 Output: 0.5 例3 Input: a=51 , b=7

我最近遇到了谷歌提出的一个面试问题,我无法找到一个优化算法来解决这个问题:

给定2个数字a和b。将a和b分开,并以字符串形式返回结果

例1

Input: a=100 , b=3
Output: 33.(3)   
Note: (100/3)=33.33333....Here 3 is in brackets because it gets repeated continuously.
例2

Input: a=5 , b=10
Output: 0.5
例3

Input: a=51 , b=7
Output: 7.(285714)
Note: 51/7 = 7.285714285714285714285714285714......... Here 285714 is in brackets because it is repeating.
如果有人能想出一个时间优化算法来解决这个问题,那就太好了。
提前谢谢。

您可以尝试跟踪商中的最后N位(N等于除数中的位数)和余数,一旦您达到相同的组合(最后N位+余数),您的数字序列将重复(我没有确凿的证据,但面试问题应该不是很难……)

你可以简单地用手进行长除法,即数字位数为O(N)——很难看出你还能做得更好


长除法的唯一问题是,如果分数是重复小数,它永远不会终止,但在开始之前,您可以很容易地检测到这一点(如果分数是重复小数,则
b
具有除2和5以外的任何因子)。如果是重复小数,您需要保留一个已看到的临时余数列表。当您遇到以前看到的临时余数时,您知道您刚刚找到了重复周期的结尾。

您检查了吗?不清楚什么是规范以及您自己的注释。问题是什么?division?小数位数?括号格式?其中did
7。(285714)
小数的来源和数量是由什么决定的?因为它们是一个序列,还是什么?@n.m.特别是因为双精度浮点只能得到这么多的小数…我想你需要一个特殊的浮点库才能得到“足够长”的结果字符串.谁说过关于浮动的事?不是我。@Lundin我同意这个问题与此无关(尽管它可能与谷歌有关).+1对你来说,是的,跟踪最后N个数字似乎是可行的选择!但浮点计算没有那么精确!对于100和3,以
%打印。20g
显示
33。33333333 6
,这不等于
33。(3)
。你不做浮点除法,而是按模进行整数除法,并记录结果和提示。
的+1很难看出你能做得更好。
!!!