Anton and Fairy Tale(二分)
去过很多西方国家的Hxx1喜欢给我们讲他的旅行见闻
有一天他讲了他与外国人谈笑风生时听到的故事
“很久很久以前,有一位国王突发奇想,想建一座大谷仓。
将所有的谷子都存在这个谷仓里。工匠们干了三天三夜,终于完成了,
然和这个谷仓有一个缺口,所以每天都会有麻雀来吃谷子…。
简单的说吧:有一个容量为n的谷仓,每天早晨会有m个单位的谷子存进去……
‘那么谷仓没有那么多空间呢?’
‘too simple!当然是装满了,剩下的就倒掉了。’
然后第i天就会有i个麻雀来吃谷子,每只麻雀一天会吃掉一个单位的谷子。。。
“
w222222s不想听这个故事了,他想知道谷仓什么时候会变成空的?请你帮他写个程序判断那将会是第几天?
Input
输入只有一行,这一行有两个整数n,m(1 ≤ n, m ≤ 1018) 分别代表谷仓的容量和每天带来的谷子,谷仓一开始是满的
Output
输出一个整数,代表第几天谷仓会第一次变成空的
Example
Input
5 2
Output
4
Input
8 1
Output
5
Note
在第一个样例中,谷仓的容量是5,每天会有2个单位谷子进入
第一天开始,由于谷仓是满的,什么都没有发生
第一天结束有一只麻雀来吃谷子 ,剩下了5 - 1 = 4 .
第二天有2单位谷子存入,谷仓再次变成满的
第二天结束的时候两只麻雀来了 ,剩下5 - 2 = 3
第三天2单位谷子存入,谷仓再次变成满的
第三天有三只麻雀前来,谷仓中还有5 - 3 = 2
第四天有两个单位谷子存入,现在谷仓中有2 + 2 = 4 个单位谷子
这一天结束的时候有四只麻雀来吃谷子 4 - 4 = 0 谷仓空了
所以答案是4,也就是在4天谷仓会变成空的
二分查找。可是直接查找会超数据范围(10e18)
开始有n个,从第一天开始,一直到m+1天开始,谷仓都是满的。到第m+1天结束,会剩下n-m-1个谷物。在n-m-1的基础上二分查找x天后谷仓变空。
把m+2天看作为第一天,那么这天结束后会剩下(n-m-1)-(m+2-m)个谷物….第二天-(m+2-m+1)
就是说把m+2天看作为第一天后,每天结束会减少2,3,4,5,x+1 个谷物。
综上,二分查找的标准就是n-m-1和(2+mid+1)*mid/2的大小关系。answer=m+1+x;
ps:当n<=m时直接输出n天就行
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
#define ll long long
int main()
{ll n,m;while(cin>>n>>m){if(n<=m){printf("%lld\n",n);continue;}else{n=n-m;ll l=0,r=2e9;while(l<r){ll mid=(l+r)/2;if(mid*(mid+1)/2>=n)r=mid;elsel=mid+1;}printf("%lld\n",l+m);}}
}
Anton and Fairy Tale(二分)相关推荐
- CodeForces 785C Anton and Fairy Tale 二分
题意: 有一个谷仓容量为\(n\),谷仓第一天是满的,然后每天都发生这两件事: 往谷仓中放\(m\)个谷子,多出来的忽略掉 第\(i\)天来\(i\)只麻雀,吃掉\(i\)个谷子 求多少天后谷仓会空 ...
- Anton and Fairy Tale CodeForces - 785C(二分+思维)
Anton likes to listen to fairy tales, especially when Danik, Anton's best friend, tells them. Right ...
- Anton and Fairy Tale
Anton likes to listen to fairy tales, especially when Danik, Anton's best friend, tells them. Right ...
- C. Anton and Fairy Tale
链接 [https://codeforces.com/contest/785/problem/C] 题意 初始时有n,第1天先加m开始吃1,但总的不能超过n,第i天先加m开始吃i(如果不够或刚好就吃完 ...
- codeforce Anton and Fairy Tale
题意:有一个谷仓,它的容量为N.第i天先会增加M(不会超出它的容量),然后减少i, 问第几天后谷仓为空,且第一天谷仓是满的. 第i天 增加 减少 1 0 1 2 1 2 3 2 3 -- -- -- ...
- Fairy tale(BFS + 大模拟)
一.题目链接: Fairy tale 二.题目大意: 给你一个N × N 的地图,图上的每个点有四种方向(E W S N),代表着移动方向. 在 t = 0 时,saya 在 (1, 1),treas ...
- 动漫推荐之 Fairy Tale 妖精的尾巴
永远的Fairy Tale!
- Fairy Tale (《传奇》英文版)
这首<Fairy Tale>的旋律应该是中国歌迷再熟悉不过的了,这是迈克学摇滚在2010年的中国巡演中给大家带来的惊喜.填上英文歌词后的<传奇>会有怎样的意境呢?我们一起来静静 ...
- Fairy Tale - 英文版《传奇》迈克学摇滚
向大家推荐一首好听的歌,可以听听试试看 [url]http://www.tudou.com/programs/view/sxJ8uTsEp8A/[/url] 没有MV,只有音乐 Fairy Tale/ ...
最新文章
- RedHat/CentOS 7通过nmcli命令管理网络教程
- java 协程框架_GitHub - yaozhang0105/dactor: Dactor是基于Java的轻量级同步异步统一处理框架,基于协程思想构建...
- Java Review - 并发编程_ CountDownLatch原理源码剖析
- android ramdisk
- 数据科学入门与实战:Seaborn001
- MyEclipse优化,解决MyEclipse运行慢、卡顿问题
- 【毕业论文写作技巧】毕业设计(论文)写作框架
- linux信任公钥的配置
- 身为管理者 会讲的六十八个故事
- python解决八数码问题_A*算法实践——八数码问题
- 教育培训机构如何利用小程序招生?
- 鞍钢不愿意上涨的原因分析
- 立创开源丨无刷电机驱动FOC驱动板
- Padavan挂载SMB共享及编译ffmpeg
- 工具类产品适合在微信公众号上运营吗?
- win8配置_【装机帮扶站】第382期:甜点级真的甜!4000价位GTX1660配置推荐!
- 数组的 find() 和 findIndex() 方法
- 数据结构(C)必会知识点+易错点:数组和广义表(n维数组地址计算公式,特殊矩阵对称矩阵的存储,广义表的表示方法)
- Redis核心技术与实战-学习笔记(二十九):Redis并发控制
- java断路器原理_spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护...