AT_ARC158A解题报告
AT_ARC158A 解题报告
题意
给你3个数
一次操作指将
若可以使
思路
我们可以将
题目也就转变成了将三个数其中一个加上
既然题目说有无法使三个数相等的情况,我们就先来考虑什么时候会使这三个数不相等。
-
因为三个数中一个加上
,另一个减去 ,所以它们的和是没有变的,而三个数最终又要相等,我们可以得到这三个数的和一定为三的倍数(否则最终变化后的结果就不为整数了)。 -
根据同余可以得到:任何一个数加上一个偶数奇偶性不会改变,所以这三个数的奇偶性就必须相同(否则最终无法变化成三个奇偶性相同且相等的数)。
再排除完上述不可能情况后,只用求出三个数最终变化后的结果
这个数据范围要做什么不用我多说了吧。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int t, a, b, c;
signed main() {
scanf("%lld", &t);
while (t--){
scanf("%lld%lld%lld", &a, &b, &c);
if (!(a % 2 == b % 2 && b % 2 == c % 2)){//奇偶性判断
printf("-1\n");
continue;
}
if ((a + b + c) % 3 != 0){//余数判断
printf("-1\n");
continue;
}
int mid = (a + b + c) / 3;
printf("%lld\n", max(abs(mid - a), max(abs(mid - b), abs(mid - c))) / 2);//答案
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现