如何用python实现比例简化?

社交媒体上, 经常会看到针对某一个观点同意与否的民意调查以及结果. 例如, 对某一观点表示支持的有1498 人, 反对的有 902人, 那么赞同与反对的比例可以简单的记为1498:902.

不过, 如果把调查结果就以这种方式呈现出来, 大多数人肯定不会满意. 因为这个比例的数值太大, 难以一眼看出它们的关系. 对于上面这个例子, 如果把比例记为5:3, 虽然与真实结果有一定的误差, 但依然能够较为准确地反映调查结果, 同时也显得比较直观.

现给出支持人数A, 反对人数B, 以及一个上限L(1 ≤ L ≤ 100), 请将A:B化简为A':B'(化简过程定义为函数). 要求在A'和B'均不大于L且A'和B'互质(两个整数的最大公约数是1)的前提下, A'/B' ≥ A/B且A'/B'-A/B的值尽可能小.

注意: 为了避免浮点数运算的误差, 应使用整数运算进行条件判断. 如: 判断A'/B' ≥ A/B可转换为判断A'B≥ AB', 前者是浮点数运算, 有误差; 后者是整数运算, 无误差. 同理, A'/B'-A/B的值尽可能小也应该转换成整数运算的比较。

1个回答

#include
using namespace std;
int main()
{
    double a,b,l,x,y;
    cin>>a>>b>>l;
    double m=1e9,tmp,k=a/b;
    for(double i=1;i<=l;i++)
    {
        for(double j=1;j<=l;j++)
        {
            tmp=i/j-k;
            if(tmp=0)
            {
                x=i;
                y=j;
                m=tmp;
            }
        }
    }
    cout<<x<<" "<<y<<endl;
    return 0;
————————————————
版权声明:本文为CSDN博主「Merry2004」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/merry2004/article/details/78125901

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问