找回密码
 欢迎注册
查看: 68566|回复: 60

[讨论] 将一正整数打散成指定长度的近似等比整数数列

[复制链接]
发表于 2013-8-15 15:01:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
已知:整数 $s$ 和 $n$,$2<=n<=16<=s<=65535$,

要求:一整数数列${ a_0,a_1,...,a_{n-1} }$,满足如下条件
  • $sum_{i=0}^{n-1}{a_i}=s$;

  • $1<=a_0<=a_1<=...<=a_{n-1}$;

  • 令 $q_0 = a_0; \ q_i =(("double")a_i)/a_{i-1}(i>0)$,需使 $max{q_i} - min{q_i}$ 尽可能地小。


请问算法思路在哪里?
如果代码全程不允许用浮点数据结构,又当如何编码?

相关帖子

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-8-15 15:50:35 | 显示全部楼层
这是我从工作中需要的一个问题提炼得到的,
看似很初等,实则又不简单。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-8-15 16:10:37 | 显示全部楼层
我对问题的背景更感兴趣
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-8-15 16:41:21 | 显示全部楼层
n=2为例:
a1+a2<65535
若使qi尽量小,则a1尽量大。
只有a1和a2为连续数时:a1/(a1-1)-a2/(a2-1)为最小。
a1/(a1-1)-(a1+m)/(a1+m-1)当m=1时为最小。
所以a1=32767   [65535/2]
a2=32768
a1+a2=65535
q1-q2=9.314*10^-10



点评

不满足第三条:这个 max{q_i} - min{q_i} = 32767 - 32768/32767 也太大了吧?  发表于 2013-8-15 16:50
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-8-15 16:47:53 | 显示全部楼层
n=3时:同理。
a1,a2,a3为连续数.
a1=21844   [65535/3]-1
a2=21845
a3=21846
a1+a2+a3=65535
q1-q3=4.19146*10^-9

点评

你的q1应=a1,你给的结果严重不满足第3条要求!  发表于 2013-8-15 16:52
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-8-15 16:55:29 | 显示全部楼层
注意:不是使 qi 尽可能地小
而是使“公比”值域范围跨度(max - min)尽可能地小!

$q_0 = a_0; \ q_i =(("double")a_i)/a_{i-1}(i>0)$

注意:上面的 i 及 i-1 均为下标。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-8-15 16:56:24 | 显示全部楼层
好像连续n个数是最符合条件的。

点评

错啦!请仔细阅读第3条要求,以及上贴的提醒!  发表于 2013-8-15 16:58
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2013-8-16 08:11:51 | 显示全部楼层
举例来说:

标准的等比数列{1,10,100,1000,10000}所有元素之和=11111,
但将“11111”打散成长度为5的最佳“等比数列”却非该数列,

比如说{6,38,240,1500,9327}的“公比”动态范围(max-min=6.333-6=0.333)
就比{1,10,100,1000,10000}的“公比”动态范围(max-min=10-1=9)
要小得多!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-8-16 17:54:42 | 显示全部楼层
没人能够解决你的问题
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-8-16 18:16:22 | 显示全部楼层
gxqcn 发表于 2013-8-16 08:11
举例来说:

标准的等比数列{1,10,100,1000,10000}所有元素之和=11111,

这样的 “公比”定义  等价有一个隐藏“超前项” a-1恒等于 1

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-23 16:24 , Processed in 0.035839 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表