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

#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 上海

相关推荐

点赞 评论 收藏
分享
lingo12:1.最好加个业务项目,大部分面试官工作以后会更偏重业务 2.实习部分描述一般般,可能hr看到会觉得你产出不够不给你过简历 3.蓝桥杯这些大部分人都有的,不如不写,反而减分项。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务