题意:刚开始你有一个木棍,造一个火炬需要一个木根和一个煤块,现在你可以用一个木棍换取\(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;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章