接“解一道算法题(上)”。

  我们可以进入如下推导:

  令x ∈(N!, 2*N!),假设x = N! + z,那么有z∈(0, N!),可以把原式转换成如下形式:

   1/(N! + z) + 1/y = 1/N!

  可以进一步转换为:

  y = (N! * N!) / z + N!

  到这一步,就很明了了,z是任意一个能被N! * N!整除的数。求N! * N!所有能整除的数字么,就是1 - N共N个数字,每数字有两个的情况下,2N个数字的排列组合了,这个排列组合,还要小于2 * N!,那么这个问题的时间复杂度应该是穷举算法能够解决的问题了。比如,令N=3,那么可以求出z能够取的值是3! * 3!能整除的数字而且小于2 * 3!,就是36所有能整除的数字而且小于12,但是包括{1, 2, 3, 4, 6, 9, 12},对于的(x, y)就是{(7, 42), (8, 24), (9, 18), (12, 12)}。具体的代码,容我有空再给出(这个代码已经不重要了吧?)

 

累计访问量终于超过十五万了,谢谢大家!和那些名博还是很有差距啊,我累计好几年的访问量,也就是人家一天的量,差距啊……不过我也不打算弥补这个差距了,老天爷估计也没计划让我弥补这个差距。

[原文在百度空间已经关闭]