1 条题解

  • 0
    @ 2025-04-30 21:49:29

    链接

    分数求和(00001)


    思路

    输入是4个整数,我们用 \(a\)\(b\)\(c\)\(d\) 表示,根据分数求和公式 \(\frac{a}{b}\)+\(\frac{c}{d}\)=\(\frac{a×d+b×c}{b×d}\) 可知我们分子 \(fz\),分母 \(fm\)的结果为 \(a×d+b×c\)\(b×d\),我们再用 \(g\)\(h\) 暂存 \(fz\)\(fm\)

    代码实现:

        int a,b,c,d,fz,fm,g,h;
        cin>>a>>b>>c>>d;
        fz=a*d+b*c;
        fm=b*d;
        g=fz;
        h=fm;
    

    题目要求是最简分数,而括号内提醒了:

    分子与分母的最大公约数为1,当分母为1省略分母

    所以我们要找到 \(a×d+b×c\)\(b×d\) 的最大公因数 \(h\),这里使用辗转相除法

    代码实现:

    while(g!=h)
        {
            if(g>h){g=g-h;}
            else{h=h-g;}
        }
    

    根据 \(a×d+b×c\)\(b×d\) 的最大公因数 \(h\)化简分子 \(fz\),分母 \(fm\),并分两种情况讨论:

    1、如果分母 \(fm\)化简后等于1,则结果为整数,输出化简后的分子 \(\frac{a×d+b×c}{h}\)

    2、如果分母 \(fm\)化简后不等于1,则结果不为整数,输出化简后的分子和分母 \(\frac{a×d+b×c}{h}\)\(\frac{b×d}{h}\)

  • 1

信息

ID
1000
难度
9
分类
(无)
标签
(无)
递交数
3
已通过
1
通过率
33%
上传者