天天看点

Codeforces 569A

题意:一首歌有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 = ;
    while (s < t) {
        s *= q;
        res++;
    }
    printf("%d\n", res);
    return ;
}