算法知识点: 枚举,欧几里得算法,数论)
复杂度:
解题思路:
由于 在100以内,因此可以枚举
的所有组合,然后判断:
-
是否互质;
-
是否大于等于
,并且最小
C++ 代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
int main()
{
int A, B, L;
cin >> A >> B >> L;
int a, b;
double delta = 1e9;
for (int i = 1; i <= L; i++)
for (int j = 1; j <= L; j++)
if (gcd(i, j) == 1)
{
double x = i * 1.0 / j;
double X = A * 1.0 / B;
if (x >= X && x - X < delta)
{
delta = x - X;
a = i, b = j;
}
}
cout << a << ' ' << b << endl;
return 0;
} 
京公网安备 11010502036488号