小红的区间构造 - 代码
区间构造,一般就是把左右端点用公式表示出来,多写几组用例找找规律,推出公式即可。
推不出来再考虑用循环遍历枚举。
本代码为前者,记得开 long long。
#include <iostream>
using namespace std;
using ll = long long;
int main() {
ll n, k, x; cin >> n >> k >> x;
ll d = x * 2 - 2;
ll r = x * (n + 1) - 1, l = r - d;
if(k >= l && k <= r) {
if(k <= (l + r) / 2) cout << x << " " << x + k - 1 << endl;
else cout << x + 1 << " " << x + k << endl;
} else cout << -1 << endl;
return 0;
}
查看6道真题和解析