houpingze 的博客

膜拜zqs,sx,zlt,ymw,qyh官方博客

题解 CF1418A 【Buying Torches】

这题对于我这个小学数学sb简直太难了,wtcl/kk

你tmd好歹期末考试数学满分过114514次的sb,居然花了30min才写出来/baojin

第二次操作,每次操作可以获得$1$个煤炭。

而我们要获得$k$个煤炭,所以第二次操作要$k$次

解方程。

解:设第一次操作$A$ 次。

$$A(x-1)+1=y*k+k$$$$A(x-1)+1=(y+1)*k$$$$A(x-1) =yk+k-1$$$$A =\left\lceil(yk+k-1)/(x-1)\right\rceil$$

注意:这道题最好不要使用ceil函数,否则数太大会有精度误差

所以code就很简单了qwq

/*writer:houpingze 绿√sb*/ 
#include<bits/stdc++.h>
#define reg register int
#define INF (1<<30)
#define int long long
using namespace std; 
int n,cnt,m,a[5010],ans,tmp,x,y,k;
signed main() {
    ios::sync_with_stdio(false);
    cin>>tmp;
    while(tmp--){
        cin>>x>>y>>k;
        int A=(y*k+k-1+x-1-1)/(x-1);//直接套公式qwq 
        cout<<A+k<<endl;//第一次操作要k次 
    } 
    return 0;
}

2021-02-10 18:13:35 in 题解