Educational Codeforces Round 95 (Rated for Div. 2) A. Buying Torches (数学)
阅读原文时间:2023年07月08日阅读:1

  • 题意:刚开始你有一个木棍,造一个火炬需要一个木根和一个煤块,现在你可以用一个木棍换取\(x\)个木棍,或者\(y\)根木棍换一个煤块,消耗一次操作,问最少需要操作多少次才能造出\(k\)把火炬.

  • 题解:初始你有一个木棍,造出\(k\)把火炬需要\(k\)个木棍和\(k\)个煤块,而一个煤块需要\(y\)个木棍,所以需要木棍\(k+y*k-1\)个,而每次操作你可以获得\(x-1\)个木棍,所以为了获得木根,需要操作\(\lceil k+y*k-1/(x-1)\rceil\),之后获得\(k\)个煤块需要操作\(k\)次,所以答案就是\(\lceil k+y*k-1/(x-1)\rceil+k\).

  • 代码:

    int t;
    int n;
    ll x,y,k;
    
    int main() {
        //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
        t=read();
        while(t--){
            x=read();
            y=read();
            k=read();
            ll cnt=k+y*k-1;
            ll res=(cnt-1)/(x-1)+1;
            printf("%lld\n",res+k);
        }
    return 0;
    }