天天看點

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 ;
}