华为机试:将真分数分解为埃及分数

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

bool isprime(int m) {
    for (int i = 2; i <= sqrt(m); i++) {
        if (m % i == 0) {

            return false;
        }
    }
    return true;
}

int main() {
    string str;
    while (cin >> str) {
        int i = str.find('/');
        string nume = str.substr(0, i);
        int n = stoi(nume);
        string deno = str.substr(i + 1, str.length() - i - 1);
        int m = stoi(deno);
        if (isprime(m)) {
            n *= 10;
            m *= 10;
        }
        string ans;
        while (n) {
            for (int i = n; i >= 1; i--) {
                if (m % i == 0) {
                    ans.push_back('1');
                    ans.push_back('/');
                    ans += to_string(m / i);
                    ans.push_back('+');
                    n -= i;
                    break;
                }
            }
        }
        ans.pop_back();
        cout << ans << endl;
        /*string ans;
        while (n--) {
            ans.push_back('1');
            ans += deno;
            ans.push_back('+');
        }
        ans.pop_back();
        cout << ans << endl;*/
        
    }
    return 0;
}

全部评论
马了慢慢看
点赞 回复 分享
发布于 2023-03-15 13:12 上海
多谢大佬分享
点赞 回复 分享
发布于 2023-03-15 13:12 山东

相关推荐

05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
昨天 15:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务