CF1418A Buying Torches

CF1418A Buying Torches

题目链接

题目描述

你要获得 k 个火把,最开始你有 1 根木棒。一个木棒和一个煤炭可以合成一个火把,你也可以通过两种交易方式得到木棒或煤炭:

通过给商人 1 根木棒,获得 x 根木棒。
通过给商人 y 根木棒,获得 1 个煤炭。
求得到 k 个火把的最少交易次数。

思路

  • 1.由题意得一根木棒可以向商人换x根木棍,所以每次换的木根数要减一,就是x-1;
  • 2.由提意得一根加一个煤炭才可以做一个火把,向商人用x根木根才可以换一个煤炭所以,煤炭所要的木根个数是yk
    3,所以总共要做y根火把所需的木棍数为yk+y-1,所以需要的兑换次数为【(y
    k)+(y-1)】(x-1).

坑点

  • 1.要开long long

代码

#include <iostream>
using namespace std;
int main(){
    
    
    long long x,y,k,t,n;
    cin>>t;//t组数据
    for (int i=1;i<=t;i++){
    
    
        cin>>x>>y>>k;
        n=(k*y+k-1)/(x-1)+k;//n用来存储次数
        if ((k*y+k-1)%(x-1)==0){
    
    
            cout<<n<<endl;
        }
        else {
    
    
            n++;
            cout<<n<<endl;
        }
    }
    return 0;
}

总结

推公式,小思维题。

猜你喜欢

转载自blog.csdn.net/m0_63328909/article/details/121928671
今日推荐