1. 程式人生 > 實用技巧 >牛客華為82-埃及分數

牛客華為82-埃及分數

題目描述

分子為1的分數稱為埃及分數。現輸入一個真分數(分子比分母小的分數,叫做真分數),請將該分數分解為埃及分數。如:8/11=1/2+1/5+1/55+1/110。 注:真分數指分子小於分母的分數,分子和分母有可能gcd不為1! 如有多個解,請輸出任意一個。 請注意本題含有多組樣例輸入!

輸入描述:

輸入一個真分數,String型

輸出描述:

輸出分解後的string

示例1

輸入

8/11
2/4

輸出

1/2+1/5+1/55+1/110
1/3+1/6

說明

第二個樣例直接輸出1/2也是可以的 

#include <iostream>

using namespace std;

int main(){
    char ch;
    int a,b;
    while(cin>>a>>ch>>b){
        while(a!=1){
            if(b%(a-1)==0){
                cout<<1<<'/'<<b/(a-1)<<'+';
                a=1;
            }
            else{
                int c = b/a+1;
                cout<<1<<'/'<<c<<'+';
                a=a-b%a;
                b=b*c;
                if(b%a==0){
                    b=b/a;
                    a=1;
                }
            }
        }
        cout<<a<<'/'<<b<<endl;
    }
    return 0;
}