题解 | #将真分数分解为埃及分数#

将真分数分解为埃及分数

https://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b

#include <iostream>
using namespace std;
#include<string>
#include<vector>
#include<cmath>

int main() {
    string s;
    while (cin >> s) {
        long int a, b; //修改为long int型,保证最后一个案例的输出
        int pos = s.find('/');
        a = stoi(s.substr(0, pos));
        b = stoi(s.substr(pos + 1));
        vector<long int>re;
        long int c;
        while (a != 1) { //a=1的时候需要输出最后一个数b
            if (b % a == 0) {
                b = b / a;
                break;
            } else {
                c = b / a + 1;
                re.push_back(c);
                a = a * c - b;
                b = b * c;
            }
        }
        for (vector<long int>::iterator it = re.begin(); it != re.end(); it++) {
            cout << "1/" << *it << '+';
        }
        cout << "1/" << b << endl;
    }

    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务