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

将真分数分解为埃及分数

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

#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
vector<vector <int>> zuhe(vector<int> in, int target) {//target 是希望选择M个作组合,in是选择的范围,长度为N
    vector<vector <int>> output;
    for (int i = 0; i < pow(2, in.size()); i++) {
        int temp = 0, count = 0;
        vector<int> weishu;
        for (int j = 0; j < in.size(); j++) {
            if ((i & (1 << j)) != 0) {
                weishu.push_back(j); count++;
            }//找出二进制为1的位数以及它们的位置
        }
        if (count == target) {//位数等于M
            vector<int> one_case;
            for (int j = 0; j < count; j++) {
                temp = in.size() - 1 - weishu[j];
                one_case.push_back(in[temp]);
            }
            output.push_back(one_case);
        }
    }
    return output;
}
int main()
{
    string a;
   while(cin>>a){
        string b, c;
        for (int i = 0; i < a.length(); i++)
        {
            if (a[i] == '/')
            {
                b = a.substr(0, i);
                c = a.substr(i + 1, a.length() - i);
                break;
            }
        }
            int e = 0, f = 0;
            for (int i = 0; i < b.length(); i++)
            {
                e = e * 10 + b[i]-'0';
            }
            for (int i = 0; i < c.length(); i++)
            {
                f = f * 10 + c[i]-'0';
            }
        
            int g, h;
            for (int i = 1;i<f; i++)
            {
                g = e * i;
                h = f * i;
                vector<int>o;
                for (int j = 1; j <= h; j++)
                {
                    if (h % j==0)
                    {
                        o.push_back(j);
                        
                    }
                }
                for (int m = 1; m < o.size(); m++)
                {
                    vector<vector<int>>p = zuhe(o, m);
                    for (int n = 0; n < p.size(); n++)
                    {
                        int t = 0;
                        for (int k = 0; k < p[n].size(); k++)
                        {
                            t = t + p[n][k];
                        }
                        if (t == e * i)
                        {
                            for (int k = 0; k < p[n].size() - 1; k++)
                            {
                                cout << '1' << '/' << f * i / p[n][k] << '+';
                            }
                            cout << '1' << '/' << f * i / p[n].back();
                            goto w;
                        }
                    }
                }
            }
        
    w:
      continue;
   }
    return(0);
}
全部评论

相关推荐

11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
440737次浏览 4493人参与
# 春招别灰心,我们一人来一句鼓励 #
41503次浏览 524人参与
# 北方华创开奖 #
107319次浏览 599人参与
# 地方国企笔面经互助 #
7930次浏览 18人参与
# 同bg的你秋招战况如何? #
75684次浏览 552人参与
# 虾皮求职进展汇总 #
114355次浏览 884人参与
# 阿里云管培生offer #
119906次浏览 2219人参与
# 实习,投递多份简历没人回复怎么办 #
2454094次浏览 34848人参与
# 实习必须要去大厂吗? #
55687次浏览 960人参与
# 提前批简历挂麻了怎么办 #
149836次浏览 1977人参与
# 投递实习岗位前的准备 #
1195731次浏览 18546人参与
# 你投递的公司有几家约面了? #
33181次浏览 188人参与
# 双非本科求职如何逆袭 #
661934次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4734次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157604次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11381次浏览 271人参与
# 发工资后,你做的第一件事是什么 #
12431次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35621次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20091次浏览 240人参与
# 我的上岸简历长这样 #
451933次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39241次浏览 314人参与
# 非技术岗是怎么找实习的 #
155852次浏览 2120人参与
牛客网
牛客企业服务