1. 程式人生 > >swust 626 分數分解(數學)

swust 626 分數分解(數學)

分數分解(0626)

Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 350 Accepted: 156 Accepted 分子為1 的分數稱為埃及分數,現輸入一個真分數,請將該分數按下面的方法分解為埃及分數: 
1.若真分數的分子a能整除分母b,則真分數經過化簡就可以得到埃及分數; 
2.若真分數的分子不能整除分母,則可以從原來的分數中分解出一個分母為b/a+1的埃及分數; 
3.用這種方法將剩餘部分反覆分解,最後可得到結果。 
如:8/11=1/2 + 1/5 + 1/37 + 1/4070。 
Description 一個分數如A/B的形式 Input 見SAMPLE OUTPUT,注意空格位置在加號前後都有 Output
1 2 3/88
Sample Input
1 2 1/30 + 1/1320
程式碼:
#include <stdio.h>
int main()
{
    int n,m;
    int a,b;
    while(scanf("%d/%d",&n,&m)!=EOF)
    {
        while(m%n!=0)
        {
            a=m/n+1;
            n=n*a-m;
            m=m*a;
            printf("1/%d + ",a);
        }
        printf("1/%d\n",m/n);
    }
    return 0;
}