QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#379331#8030. Traveling in the Grid Worldcomeintocalm#WA 1ms3844kbC++17982b2024-04-06 17:08:562024-04-06 17:08:56

Judging History

你现在查看的是最新测评结果

  • [2024-04-06 17:08:56]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3844kb
  • [2024-04-06 17:08:56]
  • 提交

answer

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

const db eps = 1e-9;
int T;
int n, m;
db ans;

int gcd (int x, int y) {
	return y ? gcd (y, x % y) : x;
}

int Gcd (int x, int y) {
	if (!x || !y) return 1;
	return gcd (x, y);
}

db calc (db x, db y) {
	return sqrtl (x * x + y * y);
}

void work() {
	//cout << 'a' << endl;
	int x = 0, y = 0;
	db fk = ((db) m) / n;
	//cout << x << " " << y << endl;
	while (x != n || y != m) {
		if (x == n) ++y;
		else if (y + 1 < (int)(fk * x + 1 - eps)) ++y;
		else ++x;
		if (Gcd (x, y) == 1 && Gcd (n - x, m - y) == 1)
		ans = min (ans, calc (x, y) + calc (n - x, m - y));
		//cout << x << " " << y << endl;
	}
}

int main() {
	int i,j,k;
	scanf ("%d", &T);
	while (T--) {
		scanf ("%d%d", &n, &m);
		ans = 1e18;
		//cout << gcd (n, m);
		if (Gcd (n, m) == 1) ans = calc (n, m);
		else work(), swap (n, m), work();
		printf ("%.12lf", ans);
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3844kb

input:

2
2 2
2 3

output:

3.2360679775003.605551275464

result:

wrong output format Expected double, but "3.2360679775003.605551275464" found