我们可能都曾听过一个励志的东西。
1%,也就是0.01.看起来是很小的一个数字。
然而,1.01的365次方等于37.78.。也就是说,如果你每天进步一小点,坚持一年下来,你会比最开始的自己强37倍。
反之,0.99的365次方等于0.026。如果你每天退步看起来微不足道的一点。一年累计下来,你甚至比最开始的自己还要差很多。
最近在学习python的时候,我再次遇到了这个问题。老师称为“天天向上的力量”
问题如下:
A君每天在基数1上努力进步1%,一年的进步为37.78。B君在工作日也是努力进步,但周末休息的时候,会退步1%。
问:B君工作日应该进步多少才可以和A君365天的成果相同。
这个题我用到了python求解,具体代码如下
def dayUP(df):
dayup = 1
for i in range(365):
if i % 7 in [6,0]:
dayup = dayup*(1-0.01)
else:
dayup = dayup*(1+df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
dayfactor = dayfactor + 0.001
print("B工作日的工作量应该为{:.3f}".format(dayfactor))
运行结果为:
B工作日的工作量应该为0.019
抛开代码。只看待这个问题。同样每天都在学习,但是B君周末去休息,A君还是照常学习。为了达到A君的水平,B君甚至要付出A君近双倍的努力才可。
那如果B君开始悔改,周末也照常学习。B君坚持一年下来可以达到如下水平。
y=pow(1+0.019,365)
结果为:962.891
结果很惊人。
如上题目中,假设周末B君是退步1%。但是现实中不一定会退步这么多。所以这个问题还有个变形,就是:其他条件不变,周末也不退步也不进步。求一年后的结果
代码修改如下:(为了后续方便,此处只修改了周末的值)
def dayUP(df):
dayup = 1
for i in range(365):
if i % 7 in [6,0]:
dayup = dayup*(1-0.0)
else:
dayup = dayup*(1+df)
return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
dayfactor = dayfactor + 0.001
print("工作日的工作量应该为{:.3f}".format(dayfactor))
运行结果为:工作日的工作量应该为0.015
在周末照常休息的情况下,B君工作日需要每天进步0.015才可以达到和A君相同的效果。
也就是说,如果周末休息,B君工作日需要付出A君的1.5倍,才能取得和他一样的成就。