[枚举]分数拆分 pascal对于给定k,求出所有满足1/k=1/x+1/y的x和y的值.输入整数k

发布时间:2021-02-25 08:08:58

[枚举]分数拆分 pascal对于给定k,求出所有满足1/k=1/x+1/y的x和y的值.输入整数k(<30000)输出以x从小到大的顺序输出样例输入8样例输出1/8=1/9+1/721/8=1/10+1/401/8=1/12+1/241/8=1/16+1/16

网友回答

其实这题运用一下数学思想就能优化许多
纯粹的枚举肯定是 徒劳无功的
1/n=1/x+1/y=(x+y)/xy 所以xy=n(x+y) =====> y=nx/(x-n)
而x枚举的范围 很容易知道 在n+1到2n n+1是因为它的倒数小于1/n 到2n是因为 枚举的最后一个肯定是1/2n+1/2n这个结果 当x比2n大的时候 实际上就跟前面的枚举重复了.
x在n+1到2n的范围 ,再判断y=nx/(x-n) 这个是不是整数就好了. 一层循环就解决了.
判断是否为整数可以用截尾函数或者四舍五入函数与 原数进行比较,若相同则为整数.
以上 有没懂的地方可以百度hi我 需要打程序 请追加提问 希望 采纳.
以上问题属网友观点,不代表本站立场,仅供参考!