C++
$\color{gold}{— > 蓝桥杯辅导课题解}$
思路:
找规律
$\color{red}{图解:}$
$时间复杂度:O(1)$
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
int x, y;
int main() {
cin >> x >> y;
if (abs(x) <= y) { // 在上方
int n = y;
cout << (ll)(2 * n - 1) * (2 * n) + x - (-n) << endl;
}
else if (abs(y) <= x) { // 在右方
int n = x;
cout << (ll)(2 * n) * (2 * n) + n - y << endl;
}
else if (abs(x) <= abs(y) + 1 && y < 0) { // 在下方
int n = abs(y);
cout << (ll)(2 * n) * (2 * n + 1) + n - x << endl;
}
else { // 在左方
int n = abs(x);
cout << (ll)(2 * n - 1) * (2 * n - 1) + y - (-n + 1) << endl;
}
return 0;
}