题解 | #质数因子# 本地通过

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>

using std::cout, std::endl, std::cin;

std::tuple<int, int> resolve(int& accumulate) {
    if (accumulate < 2) {
        return std::make_tuple(-1, -1);
    }
    int discontinue = pow(accumulate, 0.5);
    for (int i = 2; i <= discontinue; i++) {
        if (accumulate % i == 0) {
            return std::make_tuple(i, accumulate / i);
        }
    }
    return std::make_tuple(0, 0);
}

int main(int argc, char* argv[]) {
    int num, v0, v1;
    cin >> num;
    std::vector<int> factor;
    std::tuple<int, int> tmp = resolve(num);
    if (tmp == std::make_tuple(-1, -1)) {
        return 1;
    } else if (tmp == std::make_tuple(0, 0)) {
        cout << 1 << " " << num << endl;
        return 0;
    }

    for (int i = 0; i < pow(num, 0.5); i++) {
        if (tmp == std::make_tuple(0, 0)) {
            break;
        } else {
            v0 = std::get<0>(tmp);
            v1 = std::get<1>(tmp);
            factor.push_back(v0);
            tmp = resolve(v1);
        }
    }
    factor.push_back(v1);
    std::sort(factor.begin(), factor.end());
    std::for_each(factor.begin(), factor.end(), [&](int it) {
        cout << it << " ";
    });
    std::endl(cout);

    return 0;
}

线上调试通过,线上为 C++11 标准编译未通过。

全部评论

相关推荐

好久没来牛客了,今天面试了一个实习生,感觉对方形象乱糟糟的,头发像鸡窝,像刚睡醒就来面试了,第一印象直接大打折扣,感觉我没有受到应有的尊重,再加上对方业务能力也一般,我直接挂掉;大家面试的时候还是好好收拾一下自己吧,争取给面试官留下个好印象,面试这东西还是存在眼缘的
MinJerous:更在乎本质,应该看候选人是否和岗位需要的能力匹配。洗脸/不洗头都无所谓吧,说不定人家刚刚通宵准备,就是为了这场面试呢?你挂掉他核心原因还是他能力不行,而不是形象。就算形象好点,能力不行你敢给过吗,不怕后面+1质疑你
投递牛客等公司6个岗位 > 牛客激励计划
点赞 评论 收藏
分享
05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务