-3

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

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

找到方程(1/x) + (1/y) = 1/N!的正积分解的数目(读取 1 乘 n 阶乘)打印一个整数,它是模 1000007 的正积分解的数目。

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

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

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

4

4 回答 4

3

我的解决方案被面试街接受了。首先,我的解决方案没有被接受,但是在看到@Reinardus Surya Pradhit 的帖子后,我意识到,如果 pair (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

于 2012-04-26T19:28:19.823 回答
2

暂时不考虑 的特殊形式N!,求解方程

1/k = 1/x + 1/y

x = k + d。然后

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

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

于 2011-12-28T01:41:38.933 回答
0

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

于 2012-05-29T20:50:12.640 回答
0

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

N!(X+Y)=XY

我不知道从那里去哪里。

于 2011-12-28T01:25:14.677 回答