牛客華為82-埃及分數
阿新 • • 發佈:2020-12-08
題目描述
分子為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; }