欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

每日一题-比例简化-暴力

程序员文章站 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;
}