已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 讨论/求助

标题: 算法问题(应该算吧)

作者: @Ta

时间: 2012-07-02

点击: 4129

问题:某网站的签到奖励规则如下:设置基础值:50币 每日递增:1.05倍币 递增上限:30天 怎么分别用PHP 和数学求30天后的币数奖励?PHP的计算方式如下: <?php
for($i=1;$i<=30;$i++)
{
 $num=50; 
$bs=1.5;
 $num=$num*$bs;
 } echo "$num"; 
?> 可是怎么用数学算式得出这个结果呢?

[隐藏样式|查看源码]


『回复列表(12|隐藏机器人聊天)』

1. 不要笑我,我数学真的很差…
(/@Ta/2012-07-02 17:04//)

2. 不要笑我,我数学真的很差…
(/@Ta/2012-07-02 17:04//)

3. 写2个用户行分别记录用户上次签到的金币数和签到天数,如果签到天数小于30天,就获取上次的签到币数并乘1.05得到币数,然后将币数写入用户行,如果等于30天则直接获取上次的币数就行了!如果等于0天,则返回50币!用数据库和PHP写的!可能有其它更好的方法!没研究过算法,不会那东西!
(/@Ta/2012-07-02 17:12//)

4. $num=50;$i=1;where($i<=30){$num=$num*1.05;$i++;}echo $num;//如果第一天是50币的话,那么就是这样!
(/@Ta/2012-07-02 17:58//)

5. 小李同学,你看错题了…
(/@Ta/2012-07-02 18:53//)

6. 不就是数学上的的以50为首相,1.05为公差吗,n<=30,数学表达式:sn=na1+n(n-1)d/2=30*50+30*29/2*1.05=???  数学不好,算不出来,方法就这样
(/@Ta/2012-07-02 19:56//)

7. 楼主的php算错了
(/@Ta/2012-07-02 20:41//)

8.     等比数列{An}的通项公式是
    An=A1*q^(n-1)
    这是一个首项A1为50,公比q为1.05的等比数列,它的通项公式是
    An=50*1.05^(n-1)
    第30项为
    A30=50*1.05^29=205.8
(/@Ta/2012-07-02 23:21//)

9. 但是PHP是每天分步计算,30天后结果可能不是这样:因为金币的个数每天都要取整。
(/@Ta/2012-07-02 23:22//)

10. 至于楼主,你的币不是1.05倍递增吗,怎么成1.5了。
还有,你把赋初值放在循环里,你循环再多次结果还是50*1.5=75吧。
(/@Ta/2012-07-02 23:25//)

11. 另外,如果要求30天的总币数,使用等比数列前n项和公式:
    Sn=[A1*(1-q^n)]/(1-q)
(/@Ta/2012-07-02 23:28//)

12. 这是E界的规则
(/@Ta/2012-07-03 09:56//)

回复需要登录

9月29日 18:22 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1