C++:制作火把
2024-10-20 17:43:37
制作火把
时间限制 : 1.000 sec 内存限制 : 128 MB
题目描述:
小红最近在玩一个制作火把的游戏,一开始,小红手里有一根木棍,她希望能够通过这一根木棍通过交易换取制作k个火把。一个火把的制作需要消耗一根木棍和一块煤。
幸运的是,在游戏中有这样一个商人,小红可以每次在这个商人这儿进行下面两种交易中的一种交易:
- 通过1根木棍,换取得到x根木棍(即小红失去1根木棍,但能因此得到x根木棍)
- 通过y根木棍,换取得到1块煤(即小红失去y根木棍,得到1块煤)
小红可以和这个商人进行任意次的交易,现在,她需要知道,她最少需要和这个商人交易多少次才能制作出k个火把。
对于每个数据,一共有t组样例。
输入:
第一行输入一个数字t(1 ≤ t ≤ 2 x 10^4),表示数据的组数。
对于每一组数据,只有一行三个数字x,y,k(2 ≤ x ≤ 10^9,1 ≤ y,k ≤ 10^9),分别表示小红可以通过1根木棍交换得到的木棍数量,通过多少根木棍交换得到1块煤,以及小红一共需要的火把数量。
输出:
对于每一组数据,输出一个数字,表示得到k个火把最少需要的交易次数。
样例输入:
5
2 1 5
42 13 24
12 11 12
1000000000 1000000000 1000000000
2 1000000000 1000000000
样例输出:
14
33
25
2000000003
1000000001999999999
这玩意儿怎么做呢?暴力循环又会超时,对新手大大滴不友好
如果你去模拟几次就能发现,总次数=获得所需木棍次数+所需煤个数
总是要兑换那么多木棍,总是只要那些煤,那就可以将兑换二者的次数分开算
上代码
完整代码:
#include <bits/stdc++.h>
using namespace std;
long long x, y, k, t, ans=0;
long double j;
int main(){
cin>>t;
for(int i=0;i<t;i++){
cin>>x>>y>>k;
ans=0;
j=(k*y+(k-1))/(x-1);//获得所需木棍次数
ans=ceil(j)+k;//总次数=获得所需木棍次数+所需煤个数
if(ceil(j*(x-1)<k*y+(k-1)))ans++;//会有向下取整而导致答案不对的情况
cout<<ans<<endl;
}
return 0;
}
又是愉悦水题的一天~
最新文章
- 删除安装的 cocoapods 的缓存方法
- spring定时器(二)
- 利用JAVA反射机制将JSON数据转换成JAVA对象
- HDU 1394 树状数组求逆序对
- Dreamweaver SSH Tunneling
- cmd修改系统时间
- 转:Nginx RTMP 功能研究
- 开启、关闭数据库mysql
- IIS Hang Troubleshoot
- [Linked List]Reverse Nodes in k-Group
- 【Android进阶】Activity和Fragement中onSaveInstanceState()的使用详解
- Android学习之RecyclerView
- Alamofire源码解读系列(四)之参数编码(ParameterEncoding)
- 根据IO流源码深入理解装饰设计模式使用
- CentOS6下4网口绑定双IP
- 软件工程(FZU2015) 赛季得分榜,第9回合
- Java基础知识➣环境搭建与类型整理(一)
- eaeyui-combobox实现组合查询(即实现多个值得搜索)
- .NET、NET Framewor以及.NET Core的关系(一)
- BZOJ3208:花神的秒题计划Ⅰ(记忆化搜索DP)
热门文章
- 深入解析丨母婴App如何迅速收割2W新用户?
- javaweb图书管理系统之不同用户跳转不同页面
- Python入门-正则表达式
- redis的基础命令操作
- Druid 1.1.24 在控制台打印";discard long time none received connection. , jdbcUrl : jdbc:mysql://....";错误日志
- Gitlab图床配置
- Python 连接Mysql数据库执行语句操作
- Codeforeces 13B
- Vue 中 axios 跨域配置 (!!!配置完成需要重新运行,不然也不起作用)
- 2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分)