每日一题-比例简化-暴力
程序员文章站
2022-07-12 23:09:04
...
题意:
给A B L,要求就算出来个a / b,使得a / b >= A / B且 a , b <= L, 并且二者的差最小
输入格式
输入共一行,包含三个整数 A,B,L,每两个整数之间用一个空格隔开,分别表示支持人数、反对人数以及上限。
输出格式
输出共一行,包含两个整数 A′,B′,中间用一个空格隔开,表示化简后的比例。
数据范围
1≤A,B≤106,
1≤L≤100,A/B≤L
输入样例:
1498 902 10
输出样例:
5 3
思路:
范围不大,直接暴力遍历所有的分子和分母,挨个计算差值,如果差值更小了则进行记录更新
代码如下:
#include <iostream>
using namespace std;
int main()
{
int A, B, L;
int a, b;
cin >> A >> B >> L;
double delta = 1e9;
for(int i = 0; i <= L; i ++)
for(int j = 1; j <= L; j ++)
{
double x = (double) i / j;
double X = (double) A / B;
if(x >= X && x - X < delta)
{
delta = x - X;
a = i, b = j;
}
}
cout << a << ' ' << b << endl;
return 0;
}
上一篇: AcWing 458. 比例简化
下一篇: AcWing 458. 比例简化