CF785C (1600)
创始人
2024-02-09 09:45:01

https://codeforces.com/problemset/problem/785/C?f0a28=1

题目翻译

在第一天开始时,有n个谷物容量的谷仓是满的。然后,每天(从第一天开始)都会发生以下情况。
m粒谷物被送到谷仓。如果有m个谷物不适合放进谷仓,谷仓就会变满,不适合的谷物就会被带回来(在这个问题上,我们可以假设不适合放进谷仓的谷物没有被考虑在内)。
麻雀来吃谷物。第i天有i只麻雀来,即第一天有一只麻雀来,第二天有两只麻雀来,以此类推。每只麻雀吃一粒粮食。如果谷仓是空的,麻雀就什么也吃不到。
安东已经厌倦了听达尼克描述每只麻雀吃谷仓里的粮食。安东不知道这个童话故事什么时候结束,所以他要求你确定,到哪一天谷仓会第一次变空。请帮助安东,写一个程序来确定那一天的数字。
输入
输入的唯一一行包含两个整数n和m(1≤n,m≤1018)--谷仓的容量和每天带来的谷物的数量。


输出
输出一个整数--谷仓第一次变空的那一天的数字。天数从1开始编号。

例子
输入复制
5 2
outputCopy
4
输入复制
8 1
输出拷贝
5
备注
在第一个例子中,谷仓的容量是五谷,每天带来两谷。下面的情况发生了。
在第一天的开始,谷物被送到谷仓。谷仓是满的,所以没有发生什么。
第一天结束时,一只麻雀来了,吃了一粒粮食,所以还剩下5-1=4粒粮食。
第二天开始时,有两粒粮食被送来。谷仓满了,有一粒粮食装不下了。
第二天结束时,两只麻雀来了。5-2=3粒粮食。
第三天开始时,有两粒粮食被送来。谷仓又满了。
第三天结束时,有三只麻雀来吃谷物。5-3=2粒粮食。
第四天开始时,谷物又被送来。剩下2+2=4粒粮食。
第四天结束时,有四只麻雀来吃谷子。4-4=0谷粒。谷仓是空的。
所以答案是4,因为在第四天结束时,谷仓已经空了。

 思路:

分类讨论:

1. 当 n <= m 时,只有第 n 天才能刚好吃完。否则都会补满。

2. 当 n > m 时,第 m 天后谷仓将不能补满,即开始减少。可以得出第 m+1 天减少 1 ,第          m+2 天减少 2 ,第 m+3 天减少 3 ...... 而实际应该减少的即为 n - m,用等差数列求和即        可,但从第1天开始枚举会超时,所以根据等差数列求和公式可以从sqrt(2*(n - m))开始        枚举。

代码:

#include 
#include 
#include using namespace std;
#define endl '\n'
#define int long longconst int N = 3e5 + 10, mod = 1e9 + 7;
int a[N],s[N];void solve()
{int n,m;cin >> n >> m;if(n <= m){cout << n << endl;return;}int t = 2 * (n-m);for(int i = sqrt(t); ;i ++){if((i+1) * i >= t){cout << i+m << endl; return;}}
}signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);int T = 1;//cin >> T;while(T --){solve();}return 0;
}

 

相关内容

热门资讯

悦读丨一心一意,十全十美:在第... (来源:现代商业银行杂志)文|中国工商银行河北省分行团委书记 李嘉懿一心一意,是爱情最朴素的誓言;十...
委内瑞拉称拦截一架非法飞越其领... 本文转自【央视新闻客户端】;当地时间12月2日,委内瑞拉玻利瓦尔国民武装部队战略作战指挥官多明戈·埃...
金融活水润绿能 近日,甘肃省兰州市东城区清洁智慧热源项目的建设工地一派忙碌景象。该项目是兰州市重点新能源热源项目之一...
因势利导应对西北暖湿化 徐 骏作(新华社发) 戈壁荒滩下了创纪录的连阴雨,沙漠腹地出现汹涌洪水……近年来,我国西北地区出现一...
航贸金融加速数智化转型 近日,第八届虹桥国际经济论坛“航贸金融支持跨境贸易高质量发展”分论坛在国家会展中心(上海)举办。航贸...