栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

CF1612C Chat Ban

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CF1612C Chat Ban

思路:
推出公式后,分情况,二分出答案
难点在于二分的使用

#include
#define int long long
using namespace std;
int x, k;

signed main()
{
	int t; cin >> t;
	while (t -- )
	{
		cin >> k >> x;
		int flag = (1 + k) * k / 2;
		if(x >= k * k) 
		{
			cout << 2 * k - 1 << endl;
			continue;
		}
		if (x <= (1 + k) * k / 2)
		{
			int l = 0, r = k;
			int mid;
			int ans = 0;
			while (l <= r)
		    {
		        mid = (l + r) / 2;
		        if ((1 + mid) * mid / 2 >= x) ans = mid, r = mid - 1;
		        else l = mid + 1;
		    }
		    cout << ans << endl;
		}
		else
		{	int mid;
			int l = 0, r = k - 1;
			x = k * k - x;
			int ans;
			while (l <= r)
		    {
		        mid = (l + r) >> 1;
		        if ((1 + mid) * mid / 2 <= x) l = mid + 1;
		        else ans = 2 * k - mid, r = mid - 1;
		    }
		    cout << ans  << endl;//倒过来找时要正着减一下 
		}
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588278.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号