题意:一首歌有t秒,开始下载了s秒,然后开始播放,q表示经过q秒可以下载q-1秒的歌曲,每次听到下载进度的地方就重新播放,问需要重播几次可以听到完整的歌。
题解:数学题,看了http://blog.csdn.net/skyword_sun/article/details/47415681的解法才理解。(q-1)/q是下载速度,如果已经有了s秒音乐,当前实际可以听的长度S=s+s*(q-1)/q+s*(q-1)/(q)*(q-1)/q+…=s*q,那么下一次从头播放的时候实际可以听的S = S*q,所以可以递推直到S >= t。
#include <stdio.h>
int main() {
int t, s, q;
scanf("%d%d%d", &t, &s, &q);
int res = 0;
while (s < t) {
s *= q;
res++;
}
printf("%d\n", res);
return 0;
}