rin和快速迭代

rin和快速迭代

http://www.nowcoder.com/questionTerminal/a797241b43f34ed4a9ef6018747c30b1

图片说明

#include <bits/stdc++.h>

using namespace std;

long long n;
long long sum;
int a[1000005];

int main(){
    cin >> n;
    while (n != 2){
        int i = 2;
        long long x = n;

        for(i = 2; i <= x/i; ++i)
            while(x % i == 0){
                x /= i;
                a[i] ++;
            }

        long long ans = 1;
        if (x != 1) ans *= 2;
       for(int j = 2; j <= i; ++j) if (a[j] != 0) ans *= (a[j] + 1);
       sum ++;
       n = ans;
       memset(a, 0, sizeof(a));
    }
    printf("%lld", sum);
    return 0;
}
全部评论
我完全没有想过这玩意儿还有公式,顶啊
1
送花
回复
分享
发布于 2020-02-15 17:07
问下 22行 x!=1 ans*=2是什么意思?
1
送花
回复
分享
发布于 2020-02-19 10:33
秋招专场
校招火热招聘中
官网直投
为什么代码第二十行是 if (i == 1) break喔?i不应该变化不到1 吗0.0
点赞
送花
回复
分享
发布于 2020-02-05 12:11

相关推荐

祈求顺利毕业😁:简历很好了,多投吧牛油😂。主要是环境不好,大家也卷
点赞 评论 收藏
转发
20 收藏 评论
分享
牛客网
牛客企业服务