题解 | #将真分数分解为埃及分数#
将真分数分解为埃及分数
https://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b
//核心就是(b-y)/a = x; //a/b = 1/(1+x) * (1+(a-y)/b) //可以自己推一推为什么相等 #include<iostream> #include<string> using namespace std; int main(){ string inputstr; while(getline(cin,inputstr)){ //找出分母的公约数,然后和为分子 long long up,down; string tmp; for(int i = 0;i<inputstr.size();++i){ if(inputstr[i] == '/'){ up = stoi(tmp); tmp = ""; while(i<inputstr.size()){ ++i; tmp+=inputstr[i]; } break; } tmp+=inputstr[i]; } down = stoi(tmp); while(down%up != 0){ long long x = down/up,y = down%up; down = (x+1)*down; up = up-y; cout << "1/" << x+1 << "+"; } cout << "1/" << down/up << endl; } return 0; }