luogu上有这样一道经典题刚开始我是想着编译代码让计算机自己慢慢推出来的,因为是个编程题,所以n和k都会给定的。但是直到我看到数学公式,发现我看不明白他的解释,于是想自己推一推。
这是他的解释:
其中这句话我抱有疑问
看看我的解法
1.设 Peter 一共抽到了x根烟,最后的最后他剩m个烟蒂(1≤m<k)(其中x和m均为整数)。那么老板那里一共有x-m个烟蒂。Peter换来了x-n根烟抽,这些烟是他用k(x-n)个烟蒂来换的。于是得到等式k(x-n)=x-m.
化简为x=n+(n-m)/(k-1),有情况使m不为1,如n=10,k=5时,m=2。
使用(1≤m<k)数学处理得:
注意,x为整数,连不等号俩边差1,则x=[n+(n-1)/(k-1)]=[(nk-1)/(k-1)],问题在于取整。
2.Peter可以向未来换完烟的自己抽完烟后借一个烟蒂,抵消掉未来抽完烟后会剩下烟蒂的这个效果。效果上表现为,k-1个烟蒂,可以换一根烟,但不产生烟蒂。他手中总是要留有烟蒂,最少留有一个烟蒂,这个值在第一的解法中为m,所以[n+(n-1)/(k-1)]的结果更为精确。而不是[n+n/(k-1)],这个实际中可能大1.