京东笔试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 陕西

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务