80 pts 求助
查看原帖
80 pts 求助
322620
Nygglatho楼主2022/10/29 17:13

rt.

#include <bits/stdc++.h>
#define ll long long
using namespace std;

ll n, m, e, d, x;

ll Chtholly, Nephren, Ithea;

ll func(ll l, ll r) {
	ll mid = (l + r) / 2ll, mid2 = (l + r) / 2ll;
	while (l < r) {
		mid = (l + r) / 2ll;
		mid2 = mid - 1ll;
		if (mid2 * (m - mid2) == n) return mid2;
		mid2 = mid + 1ll;
		if (mid2 * (m - mid2) == n) return mid2;
		if (mid * (m - mid) == n) return mid;
		else if (mid * (m - mid) < n) l = mid + 1ll;
		else if (mid * (m - mid) > n) r = mid - 1ll;
//		printf("%lld %lld %lld %lld %lld %lld\n",mid,l,r,m-mid,mid*(m-mid),n);
	}
	return -1ll;
}

int main() {
	
// 	freopen ("decode.in", "r", stdin);
// 	freopen ("decode.out", "w", stdout);
	
	int T;
	scanf ("%d", &T);
	while (T--) {
		scanf ("%lld%lld%lld", &n, &e, &d);
		m = n - e * d + 2ll;
		bool flg = false;
		x = func(1ll, m / 2ll + 1ll);
		if (x == -1ll) printf ("NO\n");
		else printf ("%lld %lld\n", x, m - x);
	}
}

顺便问下 zj 2= 分数线 200 pts 可信吗

2022/10/29 17:13
加载中...