参考代码:

#include <iostream>
using namespace std;

void getSum(int n,int up, int down);
int main()
{
    int n;
    cin>>n;
    int up,down;
    char a;
    cin>>up>>a>>down;
    getSum(n-1,up,down);
    return 0;
}

void getSum(int n,int up,int down)
{//n代表还剩几个分式需要相加,up,down分别表示当前分式的分子和分母
    
    if(n==0){
        //无需再加,开始求最简形式
        if(up==down)
            cout<<1;
        else{
            int minN=up<down?up:down;
            for(int i=minN;i>=1;i--){//求分子和分母的最大公约数
                if(up%i==0&&down%i==0){
                    cout<<up/i<<"/"<<down/i;
                    break;
                }
            }
        }

    }
    else{//还需要与其他分式相加
        int newup,newdown;
        char a;
        cin>>newup>>a>>newdown;//输入待相加的新分式

        //通分
        int maxN = down>newdown?down:newdown;
        int i=maxN;
        for(i=maxN;;i++){
            if(i%down==0&&i%newdown==0){//求两个分母的最小公倍数
                up*=i/down;//更新分子
                newup *= i/newdown;
                down = i;
                break;
            }
        }
        getSum(n-1,up+newup,i);
    }


}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论