链接:第K小表示数
题目描述
“O.o?”
集合中一开始拥有两个数字 aaa 和 bbb,如果 aaa 与 bbb 相同,那么仅有一个数字。
小沙每次可以选择集合中的两个数(可以相同),将他们的和放入集合中,请问所有可能的集合中,第 KKK 小的值最小为多少?
注:集合中相同元素只能有一个。
输入描述:
第一行,输入三个整数 kkk,aaa,bbb 。
保证有 1≤k≤1061 \le k \le 10^61≤k≤106,1≤a,b≤1091 \le a , b \le 10^91≤a,b≤109。
输出描述:
输出一个数字代表答案。
示例1
输入
复制3 2 3
3 2 3
输出
复制4
4
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long k,a,b;
cin>>k>>a>>b;
set<long long> s;
for(int i=0;i<k;i++){
long long t=*s.begin();
s.erase(t);
s.insert(t+a);
s.insert(t+b);
}
cout<<*s.begin();
return 0;
}