E. Klee's SUPER DUPER LARGE Array!!!
Example
Input
4
2 2
7 2
5 3
1000000000 1000000000
Output
1
5
1
347369930
[!TIP]
等差求和公式什么来着,本题求最小,和前面数组是一样的模板,难点在数学(确信)使用二分查找来搜索 i,使得 right−left 为绝对差值最小的数
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int t;
scanf("%d", &t);
while (t--) {
ll n, k;
scanf("%lld %lld", &n, &k);
ll res = 1e10;
ll l = 1;
ll r = n + 1;
ll mid, right, left, baka;
while (l < r)
{
mid = l + (r - l) / 2;
//右边的和
right = (n + k - 1) * (n + k) / 2 - (mid + k - 1) * (mid + k) / 2;
//左边的和
left = (mid + k - 1) * (mid + k) / 2 - (k - 1) * k / 2;
baka = right - left;
res = min(res, abs(baka));//更新最小的绝对差值
if (baka <= 0)
{
r = mid;
} else {
l = mid + 1;
}
}
printf("%lld\n", res);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现