time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Kolya Gerasimov loves kefir very much. He lives in year 1984 and knows all the details of buying this delicious drink. One day, as you probably know, he found himself in year 2084, and buying kefir there is much more complicated.

Kolya is hungry, so he went to the nearest milk shop. In 2084 you may buy kefir in a plastic liter bottle, that costs a rubles, or in glass liter bottle, that costs b rubles. Also, you may return empty glass bottle and get c (c < b) rubles back, but you cannot return plastic bottles.

Kolya has n rubles and he is really hungry, so he wants to drink as much kefir as possible. There were no plastic bottles in his 1984, so Kolya doesn’t know how to act optimally and asks for your help.

Input

First line of the input contains a single integer n (1 ≤ n ≤ 1018) — the number of rubles Kolya has at the beginning.

Then follow three lines containing integers a, b and c (1 ≤ a ≤ 1018, 1 ≤ c < b ≤ 1018) — the cost of one plastic liter bottle, the cost of one glass liter bottle and the money one can get back by returning an empty glass bottle, respectively.

Output

Print the only integer — maximum number of liters of kefir, that Kolya can drink.

Examples

input

10

11

9

8

output

2

input

10

5

6

1

output

2

Note

In the first sample, Kolya can buy one glass bottle, then return it and buy one more glass bottle. Thus he will drink 2 liters of kefir.

In the second sample, Kolya can buy two plastic bottle and get two liters of kefir, or he can buy one liter glass bottle, then return it and buy one plastic bottle. In both cases he will drink two liters of kefir.

【题目链接】: http://codeforces.com/contest/625/problem/A

【题解】



按照常识进行贪心即可。这种题不用着急的。慢慢来就能写出来.

    if (a>=b)
{
只买b就好;
剩下的钱也一直买B,如果不能买就停止
}
if (a<b)
{
看看b-c是不是小于等于a;
如果b-c>=a
只买a;
如果b-c<a
{
if (n>=b)
{
就全都买b看看还剩多少钱.
如果能买a就用剩下的钱买a;
}
else
{
只买a;
}
}
}

【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%I64d",&x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; //const int MAXN = x;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0); LL n;
LL a,b,c; int main()
{
//freopen("F:\\rush.txt","r",stdin);
rel(n);rel(a);rel(b);rel(c);
LL ans = 0;
if (a>=b)//b比较便宜
{
if (n>=b)
{
LL numb = ((n-b)/(b-c))+1;
//就一直买b
ans += numb;
}
else
ans = 0;
}
else if (a<b)//a比较便宜
{
if (b-c>=a)//如果买b每次实际消耗和a一样,那句直接买a就好
{
ans = n/a;
}
else
if (b-c<a)//如果买b每次实际消耗更少
{
if (n>=b)
{
LL numb = ((n-b)/(b-c))+1;
//就一直买b
ans += numb;
n-=numb*(b-c);
}
else
ans = 0;
ans += n/a;//剩下有钱再买a
}
}
cout << ans <<endl;
return 0;
}

最新文章

  1. links and softwares
  2. Linux-获取当前正在执行脚本的绝对路径
  3. jsp验证码点击刷新
  4. 【Kafka入门】Kafka入门第一篇:基础概念篇
  5. C# 自己定义 implicit和explicit转换
  6. iOS禁用部分文件ARC
  7. Java多线程实现生产者消费者延伸问题
  8. JavaScript中数组Array方法详解
  9. 【HDOJ 1286】找新朋友
  10. C语言之强化,弱化符号weak
  11. [HNOI2011]XOR和路径
  12. go的生产者-消费者模式
  13. 动态调试|Maccms SQL 注入分析(附注入盲注脚本)
  14. kali linux 更新问题
  15. Python多线程基本操作
  16. WebStrom直接启动VUE项目
  17. 为Docker容器设置http代理
  18. HDU 4004 The Frog&#39;s Games(二分答案)
  19. 简话Angular 06 Angular自定义指令
  20. 动态链接库编程:非MFC DLL

热门文章

  1. 洛谷 P1177 【模板】快速排序(排序算法整理)
  2. error while loading shared libraries: libpcre.so.0的解决办法
  3. actionMode - 在屏幕中的显示位置设置
  4. 洛谷——P1042 乒乓球
  5. 51 nod 1189 阶乘分数
  6. PHP: php_ldap.dll不能加载解决方案
  7. 6 Spring Boot 静态资源处理
  8. GO语言学习(十六)Go 语言结构体
  9. Python写爬虫-爬甘农大学校新闻
  10. synchronized和AtomicInteger解决并发问题的性能比较