1 条题解
-
1
错,得,好,冤!
没加freopen错了上代码
#include <bits/stdc++.h> using namespace std; long long n, k, e, d, m, p, q; int main(){ freopen("decode.in", "r", stdin); freopen("decode.out","w",stdout); cin >> k; while(k--){ cin >> n >> d >> e; long long m = n - e*d +2; long long l = 1, r = m/2, p, q; // p <= q 所以 p <= m/2 while(l <= r) { p = (l + r) / 2; q = m - p; if(n == p*q) { // 在 p 的值域范围内,p*q 是单调递增的 break; } else if(n < p*q) { r = p - 1; } else { l = p + 1; } } if(n == p*q) { cout << p << ' ' << q << '\n'; } else { cout << "NO\n"; } } fclose(stdin); fclose(stdout); return 0; }
信息
- ID
- 303
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 70
- 已通过
- 18
- 上传者