light oj 1236 【大数分解】

给定一个大数,,分解质因数,每个质因子的个数为e1,e2,e3,……em,

则结果为((1+2*e1)*(1+2*e2)……(1+2*em)+1)/2.

//light oj 1236 大数分解素因子#include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #include <ctype.h> #include <time.h> #include <queue> #include <iterator> const int MAXN = 10000200;bool com[MAXN];int primes;long long prime[MAXN/10];long long ans, t, n;void init(int n){primes = 0;memset(com, false, sizeof(com));com[0] = com[1] = true;for (int i = 2; i <= n; ++i){if (!com[i]){prime[++primes] = i;}for (int j = 1; j <= primes && i*prime[j] <= n; ++j){com[i*prime[j]] = true;if (!(i % prime[j]))break;}}}long long solve(long long n)//大数分解{ans = 1;for (int i = 1; i<=primes && prime[i] * prime[i] <= n; i++){if (n % prime[i] == 0){t = 1;n /= prime[i];while (n%prime[i] == 0){t++;n /= prime[i];}ans *= (1 + 2 * t);}}if (n > 1)ans *= 3;return (1+ans) / 2;}int main(){ init(10000000);int tt, cases = 1;scanf("%d",&tt);while (tt–){scanf("%lld",&n);long long res = solve(n);printf("Case %d: %lld\n",cases++,res);}return 0;}

坐在外婆的沙滩,看最白的帆影。

light oj 1236 【大数分解】

相关文章:

你感兴趣的文章:

标签云: