真分數分解為埃及分數(HJ82) (不太懂)
阿新 • • 發佈:2020-07-30
C++程式碼:
#include<iostream> #include<string> using namespace std; int main() { char ch='0'; int a = 0; int b =0; while (cin >> a >> ch >> b) { while (a != 1) { if (b % (a - 1) == 0) { cout << 1<< "/" << b / (a - 1) << "+"; a = 1; } else { int c=0; c = b / a + 1; //新的埃及分數的分母 a = a - b % a; //通分後相減得到的分子 //因為:b=na+x,由通分可得分子為ac-b,c=n+1則分子為na+a-na-x=a-x,而x=b%a,所以分子為a-b%ab = b * c; //通分後的分母 cout << 1 << "/" << c << "+"; if (b%a == 0) { //判斷最新得到的是不是埃及分數 b = b / a; a = 1; } } } cout << 1<< "/" << b << endl; } return 0; }