3 条题解
-
1
X4C 题解
思路
差值为
差值为
…………
结论是后面会一直延续下去,都是 或 。
所以答案为
注:
再证明一件事情,如果 异号,答案一定为 (样例2的提示)。
假设 。
用伪代码那来解释一下:
while a+b > 0 : b = a + b 结束后 if a + b == 0 : { a = a + b // a = 0 b = a + b // b = a abs(a - b) = 0 } else : { while a + b < 0 : a = a + b while a + b > 0 : b = a + b 因为 a b 的差一直减小, 所以显然最后 a + b = 0 }
重点细节
不开
long long
见祖宗Code
#include <bits/stdc++.h> #define int long long #define endl() putchar('\n') #define space() putchar(' ') #define to_ans() putchar('&') #define to_debug() putchar('^') #define debug() puts("runs there") using namespace std; inline int read() { int x = 0, f = 1; char ch = getchar(); while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); } while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar(); return x * f; } void write(int x) { if (x < 0) putchar('-'), x = -x; if (x > 9) write(x / 10); return void(putchar(x % 10 + 48)); } int a, b; signed main() { int T = read(); while(T--) { a = read(), b = read(); if(a * b <= 0) write(0), endl(); else write(min({abs(a), abs(b), abs(a - b)})), endl(); } return void(endl()), signed(0); }
信息
- ID
- 56
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 650
- 已通过
- 234
- 上传者