题目 链接
题目大意
给定一个数字x然后要找到一个y满足:|y - |y - x|| = k,然后x每一次可以向左或者向右移动一步,问至少多少步可以找到满足要求的y,然后不存在负数(数轴是0-x)。
简析
分情况讨论即可。
- x <= k
这种情况只能一直移动到k,即答案为k - x - x > k
这种情况有两种可能,一是当前状态就是合法的,只要满足x - k 是偶数,那么y就是(x - k) / 2,否则把x向右移动一格也能变成合法,所以答案就是0或者1,最开始合法就是0了;
时间复杂度分析
数学构造 复杂度O(1)
参考代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
const int N = 210;
int main() {
freopen("in.txt", "r", stdin);
int t;
cin >> t;
int n, k;
while (t--) {
cin >> n >> k;
if (n <= k) {
cout << k - n << endl;
continue;
}
if ((n - k) % 2 == 0) cout << 0 << endl;
else cout << 1 << endl;
}
return 0;
}