Educational Codeforces Round 95 (Rated for Div. 2) A. Buying Torches (数学)

-
题意:刚开始你有一个木棍,造一个火炬需要一个木根和一个煤块,现在你可以用一个木棍换取\(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; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号