zoukankan      html  css  js  c++  java
  • 二分|煤气灶

    牛客寒假基础训练营

    题目描述

    小j开始打工,准备赚钱买煤气灶。
    第一天,小j的工资为n元,之后每天他的工资都比前一天多d元。
    已知煤气灶需要m元,求小j最少工作几天才能买到煤气灶。
    输入描述:
    四个整数 n,m,d,x
    分别表示小j第一天的工资,煤气灶的价格,工资每天的增长量,答案不超过x

    输出描述:

    一个数表示答案
    示例1

    输入

    10 100 20 100

    输出

    4

    二分,求最小的满足条件的解。等差数列求和,不等式求解。数据大卡long long。

    代码:

    #include<bits/stdc++.h>
    #define eps 1
    using namespace std;
    
    
    typedef long long ll;
    ll n,m,d,x;
    
    bool judge(ll x){
    	return (x*x*d  + (2*n-d)*x-2*m) >=0;
    }
    
    int main(){
    	scanf("%lld%lld%lld%lld",&n,&m,&d,&x);
    	ll l = 0,r = x+1;
    	while(r - l > eps){
    		ll mid = (l+r)>>1;
    		if(judge(mid)) r = mid; //满足条件说明 值过大了  
    		else l = mid;
    	}
    	printf("%lld
    ",r); //打印满足条件的 r 
    	return 0;
    } 
    
  • 相关阅读:
    图像处理基础2
    c++之morphologyEx(形态学操作)
    图像处理基础
    Mac 安装QT
    Qmake VS Cmake
    g++,qmake,cmake区别
    C++11中的匿名函数(lambda函数,lambda表达式)
    c++相关要点
    spritekit基础节点学习
    spriteKit简单学习
  • 原文地址:https://www.cnblogs.com/fisherss/p/10357678.html
Copyright © 2011-2022 走看看