链接:https://ac.nowcoder.com/acm/contest/332/B
来源:牛客网
题目描述
小j开始打工,准备赚钱买煤气灶。
第一天,小j的工资为n元,之后每天他的工资都比前一天多d元。
已知煤气灶需要m元,求小j最少工作几天才能买到煤气灶。
输入描述:
四个整数 n,m,d,x
分别表示小j第一天的工资,煤气灶的价格,工资每天的增长量,答案不超过x
输出描述:
一个数表示答案
输入
10 100 20 100
输出
4
0≤n,d≤109,n+d>00≤n,d≤109,n+d>0
1≤m≤10181≤m≤1018
1≤x≤1091≤x≤109
二分做,数据水了其实暴力也可以过
#include<bits/stdc++.h>
using namespace std;
int main(){long long n,m,d,x,ans;cin>>n>>m>>d>>x;long long l=1,r=x;while(l<=r){long long mid=(l+r)/2;long long sum=n*mid+d*mid*(mid-1)/2;if(sum>=m)ans=mid,r=mid-1;else l=mid+1;}cout<<ans<<endl;
}