3. 写2个用户行分别记录用户上次签到的金币数和签到天数,如果签到天数小于30天,就获取上次的签到币数并乘1.05得到币数,然后将币数写入用户行,如果等于30天则直接获取上次的币数就行了!如果等于0天,则返回50币!用数据库和PHP写的!可能有其它更好的方法!没研究过算法,不会那东西!
4. $num=50;$i=1;where($i<=30){$num=$num*1.05;$i++;}echo $num;//如果第一天是50币的话,那么就是这样!
6. 不就是数学上的的以50为首相,1.05为公差吗,n<=30,数学表达式:sn=na1+n(n-1)d/2=30*50+30*29/2*1.05=??? 数学不好,算不出来,方法就这样
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
9. 但是PHP是每天分步计算,30天后结果可能不是这样:因为金币的个数每天都要取整。
10. 至于楼主,你的币不是1.05倍递增吗,怎么成1.5了。
还有,你把赋初值放在循环里,你循环再多次结果还是50*1.5=75吧。
11. 另外,如果要求30天的总币数,使用等比数列前n项和公式:
Sn=[A1*(1-q^n)]/(1-q)