【洛谷】P11062 【MX-X4-T2】「Jason-1」加法 的题解

【洛谷】P11062 【MX-X4-T2】「Jason-1」加法 的题解

题目传送门

离 CSP 初赛只剩两天了,祝各位 OIers rp ++!!!

题解

挺有意思的一道思维题,不过比赛的时候没想出来。

需要分类讨论两种情况:

  • 当 a a a, b b b 为异号时

当 a a a, b b b 为一正一负时,我们对于绝对值较大的数,将其赋值为 a + b a+b a+b,进行完操作后,可得操作完后 a a a, b b b 要么一正一负,要么其中一个为 0 0 0,对于前者继续重复上述操作,通过这种类似辗转相除法的操作,最后一定会出现 0 0 0。

  • 当 a a a, b b b 为同号时

经过暴力枚举,不难看出只进行零次或一次操作后可以取到最小值。

所以答案为 min ⁡ ( ∣ a ∣ , ∣ b ∣ , ∣ a − b ∣ ) \min(\left|a\right|,\left|b\right|,\left|a-b\right|) min(∣a∣,∣b∣,∣a−b∣)。

代码

#include <bits/stdc++.h>
#define lowbit(x) x & (-x)
#define endl "\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
namespace fastIO {
	inline int read() {
		register int x = 0, f = 1;
		register char c = getchar();
		while (c < '0' || c > '9') {
			if(c == '-') f = -1;
			c = getchar();
		}
		while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
		return x * f;
	}
	inline void write(int x) {
		if(x < 0) putchar('-'), x = -x;
		if(x > 9) write(x / 10);
		putchar(x % 10 + '0');
		return;
	}
}
using namespace fastIO;
int T, a, b;
int main() {
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	T = read();
	for(int i = 1; i <= T; i ++) {
		a = read(), b = read();
		if(a < 0 && b > 0 || a > 0 && b < 0) {
			write(0), putchar('\n');
		}
		else {
			write(min({abs(a), abs(b), abs(a - b)})), putchar('\n');
		}
	}
	return 0;
}
相关推荐
AQin10123 分钟前
【Leetcode·中等·数组】59. 螺旋矩阵 II(spiral matrix ii)
算法·leetcode·矩阵·数组
好记性+烂笔头5 分钟前
hot100_73. 矩阵置零
数据结构·算法·矩阵
M_Lin_7 分钟前
文件IO
算法
robin_suli20 分钟前
穷举vs暴搜vs深搜vs回溯vs剪枝系列一>字母大小写全排列
算法·剪枝·深度优先遍历·回溯
lzb_kkk27 分钟前
【C++】JsonCpp库
开发语言·c++·json·1024程序员节
智驾35 分钟前
SOLID原则学习,开闭原则
c++·开闭原则·solid
至暗时刻darkest1 小时前
STM32 单片机 练习项目 LED灯闪烁&LED流水灯&蜂鸣器 未完待续
c++·单片机
在西湖雾雨中起舞1 小时前
P9748 [CSP-J 2023] 小苹果
算法
飞飞是甜咖啡1 小时前
【Orca】Orca - Graphlet 和 Orbit 计数算法
c语言·c++·人工智能·python
海海不掉头发1 小时前
【 算法设计与分析-回顾算法知识点】福建师范大学数学与计算机科学学院 2006 — 2007学年第二学期考试 A 卷
算法·期末复习