Interviewstreet的示例测试用例:方程式

时间:2011-12-28 01:02:24

标签: c++ math testcase equations

所以有一个名为interviewstreet.com的网站。在这里,我们可以找到具有挑战性不幸的是,你必须登录才能看到问题。

以下是我试图解决的问题的简要说明:

  

找出方程(1/x) + (1/y) = 1/N!的正整数解的no(由n因子读取1)打印一个整数,它是模1000007的正整数解的no。

例如,当N=3时,(x,y)可以是:(7,42)(9,18)(8,24)(12,12)(42,7)(18,9)(24,8)。或者我想。

请帮助我,特别是那些解决了这个问题的人。我刚刚为问题方程编码。我的算法有问题,我可以要求前10个整数的输出吗?即N=2N=3N=4 ... N=10,以便我可以找出算法中的缺陷。谢谢:))

编辑:哦,请不要发布解决方案代码,因为它会破坏我和试图解决此问题的人们的乐趣:)

4 个答案:

答案 0 :(得分:3)

我的解决方案被采访街接受了。 首先,我的解决方案没有被接受,但在看到@Reinardus Surya Pradhit帖后,我意识到,如果对(x,y)将计数两次,那么我将它改成一窝并获得成功 我不会在这里发布我的解决方案,但我可以告诉你N = 3的所有变量的测试用例 - > N = 10 结果

N=3: 9
N=4: 21
N=5: 63 
N=6: 135
N=7: 405
N=8: 675
N=9: 1215
N=10: 2295

我的提示是:试着表达N!来自p1^q1 * p2^q2 * ... * pn^qn

的素数

答案 1 :(得分:2)

暂时忽略N!的特殊形式,以解决等式

1/k = 1/x + 1/y

x = k + d。然后

1/y = 1/k - 1/(k + d) = d/(k*(k+d))

确定解决方案数量的任务留给读者练习。

答案 2 :(得分:0)

重要的是只处理整数以避免舍入错误:首先将等式重新排列为:

N!(X+Y)=XY

我不确定从那里开始。

答案 3 :(得分:0)

得出最终结果我们需要计算(2 * q1 + 1)*(2 * q2 + 1)*(2 * q3 + 1)... 但是我们将如何存储结果,假设N = 32327将超出结果。 如果我错了,请纠正我