找回密码
 欢迎注册
查看: 49|回复: 2

[原创] 点亮第N栋建筑所需点击次数的求解

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

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

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

×
我开发了一个和《点亮城市》https://lewan.baidu.com/lewan?gameId=213333056330956800 类似的小游戏,游戏规则如下:

==========

游戏开始时,玩家拥有的现金数额为1,所有的建筑都是未点亮的状态

现金可以用来点亮建筑,也可以用来升级建筑

点亮第i栋建筑需要花费数额为25^(i-1)的现金

被点亮的建筑,其产量为2^(s-i)*10^(i-1)*等级

其中,s为当前点亮的建筑总数,i表示该建筑是第几栋被点亮的建筑

新点亮的建筑,等级为1

对于第i栋被点亮的建筑:

从第1级升到第2级的费用为:f(i,第i栋建筑的点亮费用)

从第2级升到第3级的费用为:f(i,第i栋建筑从第1级升到第2级的费用)

从第3级升到第4级的费用为:f(i,第i栋建筑从第2级升到第3级的费用)

后面依次类推:

从第k级升到第(k+1)级的费用为:f(i,第i栋建筑从第(k-1)级升到第k级的费用)

其中,f是一个参数个数为2、定义域和值域均为正整数的函数,其定义为:f(i,x) = x + floor(x/ln(x+1)/2^(i-1))

该游戏是一帧一帧地进行的

玩家在该游戏的每一帧里,都可以【点击现金】或者【点击某栋建筑】

如果点击现金,那么玩家在这一帧里可以获得数额为(第1栋建筑的产量+第2栋建筑的产量+……+第s栋建筑的产量)的现金

如果点击建筑:

  如果点击的是新建筑且当前的现金数额大于等于25^s,则可以点亮一栋新建筑并扣除25^s的现金,且s的值会增加1

  如果点击的是第i栋建筑且当前的现金数额足够支付该栋建筑升到下一级的费用,则可以将该栋建筑升到下一级并从现金里扣除升级费用

===========游戏规则描述完毕===========

本贴要求解的问题如下:

1. 如果要用最少的点击次数点亮第N栋建筑,应该如何操作?点亮第N栋建筑所需点击次数的最小值是多少?

2. 假设玩家充值10元后,可以拥有这样的技能:

只需要点击某栋建筑1次,就可以将该建筑一级一级地不断地升到下一等级,直到把当前的现金数额花至不足以支付该建筑升到下一等级的费用为止

问充值后应该如何操作,才能用最少的点击次数点亮第N栋建筑?点亮第N栋建筑所需点击次数的最小值降至多少?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 3 天前 | 显示全部楼层
对于较小的N,第1问的求解结果如下:

当N=1时,只需要点击1次,就可以点亮第1栋建筑,因为点亮第1栋建筑需要花费数额为 25^(1-1) = 25^0 = 1 的现金

而游戏开始时,玩家拥有的现金数额为1,足够支付点亮第1栋建筑的费用,因此点亮第1栋建筑所需点击次数的最小值是1

点击前的局面如下图所示:

1.png

点击后的局面如下图所示:

1.png

当N=2时,点亮第2栋建筑所需点击次数的最小值是16,操作如下:

把第1栋建筑点亮后,其产量为 2^(s-i)*10^(i-1)*等级 = 2^(1-1)*10^(1-1)*1 = 2^0*10^0*1 = 1 (累计点击次数:1)

然后点击2次现金,得到数额为 第1栋建筑的产量 + 第1栋建筑的产量 = 1 + 1 = 2 的现金(累计点击次数:3),如下图所示:

1.png

然后点击第1栋建筑(升级费用 = f(1,点亮费用) = f(1,1) = 1 + floor(1/ln(1+1)/2^(1-1)) = 1 + floor(1/0.693/1) = 1 + floor(1.44) = 2)

就可以花费数额为2的现金把第1栋建筑升到第2级(累计点击次数:4),如下图所示:

1.png

然后点击2次现金,得到数额为 第1栋建筑的产量 + 第1栋建筑的产量 = 2 + 2 = 4 的现金(累计点击次数:6)

然后点击第1栋建筑(升级费用 = f(1,2) = 2 + floor(2/ln(2+1)/2^(1-1)) = 2 + floor(2/1.0986/1) = 2 + floor(1.82) = 3)

就可以花费数额为3的现金(现金余额:4 - 3 = 1)把第1栋建筑升到第3级(累计点击次数:7),如下图所示:

1.png

若继续升级,则无法节省点亮第2栋建筑所需的点击次数了

此时应该点击8次现金,得到数额为 第1栋建筑的产量 * 8 = 3 * 8 = 24 的现金(累计点击次数:15),如下图所示:

1.png

此时我们已经攒够了点亮第2栋建筑所需的现金数额,点击第2栋建筑即可(累计点击次数:16),如下图所示:

1.png

至此,我们一共点击了16次,就把第2栋建筑点亮了,这应该是点击次数最少的操作方案了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 3 天前 | 显示全部楼层
这是我目前的游戏进度,已经打到百万P了(1 P = 1000 T = 10^6 B = 10^9 M = 10^12 K = 10^15):

1.png

点亮的建筑已经超过1页了,这是第2页:

1.png

打到这里大约耗时8小时,累计点击次数大约16万次,点亮了16栋建筑

(统计点击次数的功能暂未开发,目前只能根据建筑的等级大致估算)

#####

上面进行的游戏是没有经过充值的,要把建筑升到26000级,就得点击26000次,非常耗费点击次数

点亮第N栋建筑所需的点击次数大约是2的N次方(感觉这个底数2应该是介于2到2.5之间的,有谁可以帮我把这个底数算得更准一些?)

如果经过充值,则只需点击一次,就可以把一栋建筑升级到把钱花光为止,应该会节省大量的点击次数

此时点亮第N栋建筑所需的点击次数可能只有1.25的N次方(感觉这个底数1.25应该是介于1到2之间的,有谁可以帮我把这个底数算得更准一些?)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2025-3-31 15:39 , Processed in 0.035067 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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