You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include <bits/stdc++.h>
using namespace std;
/*
由于 L 在100以内因此可以枚举 A,B 的所有组合,然后判断:
(1)、A,B 是否互质;
(2)、AB 是否大于等于 AB并且最小
优化:
由于我们是从小到大枚举的每一个(A',B'),所以如果gcd(A',B')>1时那么一定在前面枚举过(A'/d,B'/d).这两组的比值是相同的,面
后面我们的判断取最小的条件是x-X<mi,这组后来的(A',B')肯定是无法覆盖掉前面的$A'/d,B'/d$,也就是最终结果中保存的就是互质的一组数据的比例
,由此可以优化掉一个logL的时间复杂度从而将O(L^2 LogL)优化为 O(L^2)
*/
int main() {
int A, B, L;
cin >> A >> B >> L;
int a, b;
double mi = 1e9;
for (int i = 1; i <= L; i++)
for (int j = 1; j <= L; j++) {
double x = i * 1.0 / j;
double X = A * 1.0 / B;
if (x >= X && x - X < mi) {
mi = x - X;
a = i, b = j;
}
}
cout << a << ' ' << b << endl;
return 0;
}