- 主题:转个题:1到100中找10个数使其倒数和为1
直接暴力搜索,简单的利用数学不等式限制了每个数的范围。
在我的6代IntelU的笔记本上,单核跑了30秒左右(C++)。
ALL count = 69014,ITERS Num = 1915408207,Time=27328 ms
【 在 z16166 的大作中提到: 】
: 在整数1到100中找10个不同的数,使其倒数和为1。求所有的解。
: 10个数只是顺序不同的话,视为相同的解。
--
修改:foliver FROM 183.193.19.*
FROM 183.193.19.*
double足以。求和校验eps用1.0e-14
实际上可以根本不用求和验证。因为最后一个数是计算出来。
【 在 z16166 的大作中提到: 】
: 69014是对的
:
: 用浮点计算的?
: ...................
--来自微微水木3.5.14
--
修改:foliver FROM 183.193.19.*
FROM 183.193.19.*
其实100误导了大家。题目扩展一下,从所有自然数中取出10个不同的数字,使它们的倒数和为1,有多少中取法?
假定10个数字x1,x2..,x10递增
x1显然只能在2..10
假设已经取了n个数字,那么这n个数字倒数和与1的差为r。显然第n+1个分数最大为r,由于还有10-n个数字要选,故第n+1分数最小也要为r/(10-n),列出
r/(10-n)<=1/x[n+1]<=r
再结合
x[n]<x[n+1]<=100
可以得到x[n+1]上下限
前面9个选定后,就判断存不存在第10个数。直接计算剩余r,计算1/r。只需判定附近的2个整数是否满足。或者其他你喜欢的方式。
【 在 z16166 的大作中提到: 】
: 你的限定条件不等式,是怎样的?
:
:
: ...................
--来自微微水木3.5.14
--
FROM 183.193.19.*