社区讨论
P9830为什么过不去啊啊啊啊
题目总版参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhj0w41c
- 此快照首次捕获于
- 2025/11/03 18:54 4 个月前
- 此快照最后确认于
- 2025/11/03 18:54 4 个月前
我就奇怪了样例都能过为什么题目过不去啊aP9830不就是个贪心吗求大佬解答
CPP#include <bits/stdc++.h>
using namespace std;
const int INF = 10000001;
int t;
int gcd(int x, int y) {
if(x == 0 && y == 0) {
return 0;
} else if(y == 0) {
return x;
} else if(x == 0) {
return y;
}
return gcd(y, x % y);
}
int main() {
cin >> t;
while(t--) {
int n, m, a[201][201];
cin >> n >> m;
if(gcd(n, m) == 1) {
double ans = sqrt((double)(n * n + m * m));
printf("%.15lf\n", ans);
} else {
double ans = INF;
for(int i = max(0, n/2 - 100); i <= min(n, n/2 + 100); i++) {
for(int j = max(0, m*i/n - 2); j <= min(m, m*i/n + 2); j++) {
if(gcd(i, j) == 1 && gcd(n - i, m - j) == 1) {
if(i * (m - j) != j * (n - i)) {
ans = min(ans, sqrt((double)(i * i + j * j)) + sqrt((double)((n-i) * (n-i) + (m-j) * (m-j))));
}
}
}
}
printf("%.15lf\n", ans);
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...