题解 CF1418A 【Buying Torches】

houpingze

2021-02-10 18:13:35

Solution

~~这题对于我这个小学数学sb简直太难了,wtcl![/kk](https://cdn.luogu.com.cn/upload/pic/62227.png)~~ ~~你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 ```cpp /*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; } ```