京东笔试C++到怀疑人生,第二题运行0%,求大家看看怎么回事

测试用例可以通过,自己测试了几个其他的数值也可以。
这种方法时间复杂度有点高,但是0% 实在是想不明白。
#include<iostream>
#include<vector>
#include<math.h>
using namespace std;

int dft(int num)
{
    if(num == 1)
        return 0;
    if(num == 2)
        return 1;
    
    int count;
    int sqrtnum = (int)sqrt(num);   //开方
    int a = 1;
    for(int i=sartnum; i>=1; i--)
    {
        if(num % i == 0)
        {
            a = i;
            break;
        }
    }
    if(a != 1)   //不为质数
        count = dft(num/a) + dft(a);
    else
        count = dft(num - 1);
    
    return count+1;
}

int main()
{
    int n;
    cin>>n;
    vector<int>v(n);
    for(int i=0; i<n; i++)
        cin>>v[i];
    
    int countSum = 0;
    for(int i=0; i<n; i++)
        countSum = countSum + dft(v[i]);
    cout<<countSum;
    
    return 0;
}


#京东笔试#
全部评论
你dft里的a永远只取一个值啊,你情况考虑的不全吧
点赞 回复 分享
发布于 2022-09-03 23:10 陕西
乘法的操作次数不一定比加法少?
点赞 回复 分享
发布于 2022-09-04 08:55 陕西

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务