题解 | #约数的个数#

约数的个数

http://www.nowcoder.com/practice/04c8a5ea209d41798d23b59f053fa4d6

#include<iostream>
#include<cmath>
#include<map>
using namespace std;

map<long long, int> myMap;

long long numYueshu(long long n){
    long long answer = 0;
    for(int i = 1; i < sqrt(n); i++){
        if(n%i==0){
            answer++;
            answer++;
        }
    }
    if(sqrt(n)==int(sqrt(n))) answer++;
    return answer;
}

int main(){
    long long n;
    int N;
    cin>>N;
    for(int i = 0; i < N; i++){
        cin>>n;
        cout<<numYueshu(n)<<endl;
    }
    return 0;
}

直接暴力会超时,注意到每个数字如果有小于sqrt(n)的约数则必有一个大于sqrt(n)的约数,最后再判断sqrt(n)能否整除,能整除则+1。

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:48
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务