LightOJ1236 Pairs Forming LCM 素因子分解

原创 2016年08月30日 18:24:27
  1. 约数,倍数,质因数等都应该联想素因子分解。
  2. 要考虑哪些情况应该排除,哪些不应该排除,细节的处理。
  3. 这道题当一对数相等时不判重,而只有一对这样的数,就是(n,n)。

题目链接:http://acm.hust.edu.cn/vjudge/problem/26946

#pragma comment(linker,"/STACK:1024000000,1024000000")
#include<cstdio>
#include<iostream>
#include<sstream>
#include<cstdlib>
#include<cmath>
#include<cctype>
#include<string>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<ctime>
#include<vector>
#include<fstream>
#include<list>
using namespace std;

#define ms(s) memset(s,0,sizeof(s))
typedef unsigned long long ULL;
typedef long long LL;

const int INF = 0x3fffffff;

const int N = 10000000;
bool primeTable[N+5];
int p[N/10],tot;
int e[N/10];
LL ans;

void make_primeTable(){
    tot = 0;
    fill(primeTable,primeTable+N,1);
    primeTable[0] = false;
    primeTable[1] = false;

    int maxed = sqrt(N);
    for(int i = 2; i <= maxed; ++i){
        if(primeTable[i] == true){
            p[tot++] = i;
            for(int j = i*i; j <= N; j += i)
                primeTable[j] = false;
        }
    }
    for(int i = maxed+1; i <= N; ++i)
        if(primeTable[i] == true)  p[tot++] = i;
}
void add_factor(LL n){
    memset(e,0,sizeof(e));
    ans = 1;
    if(n < 2)  return;
    for(int i = 0; i < tot; ++i){
        while(n%p[i] == 0){
            e[i]++;
            n /= p[i];
        }
        ans *= 2*e[i]+1;
        if(n == 1LL)  break;
    }
    if(n > 1LL){
        ans *= 3;
    }
    ans = (ans+1)/2;
}

int main()
{
//    freopen("F:\\input.txt","r",stdin);
//    freopen("F:\\output.txt","w",stdout);
//    ios::sync_with_stdio(false);
    make_primeTable();
    int t;
    LL n;
    scanf("%d",&t);
    for(int cas = 1; cas <= t; ++cas){
        scanf("%lld",&n);
        add_factor(n);
        printf("Case %d: %lld\n",cas,ans);
    }

    return 0;
}
版权声明:你的支持就是我分享的动力~欢迎评论顶我Orz

LightOJ - 1236 Pairs Forming LCM【唯一分解定理】

题目链接:http://vjudge.net/contest/70017#problem/H(题目描述在末尾) 题目大意:在a,b中(a,b 素因子分解:n = p1 ^ e1 * p2 ^ e2 *...

LightOJ 1236 - Pairs Forming LCM (LCM·唯一分解)

题意  给你一个数n  求满足lcm(a, b) == n, a 容易知道 n 是a, b的所有素因子取在a, b中较大指数的积 先将n分解为素数指数积的形式  n = π(pi^ei)    ...
  • acvay
  • acvay
  • 2015年08月07日 09:27
  • 1170

LightOJ1236 - Pairs Forming LCM(LCM+唯一分解定理)

题目链接:https://vjudge.net/problem/LightOJ-1236题目大意:给定一个数nn,求满足i≤j...

LightOJ 1236 Pairs Forming LCM

题目链接:点我Find the result of the following code:long long pairsFormLCM( int n ) { long long res = 0...
  • cccruel
  • cccruel
  • 2017年07月29日 10:24
  • 95

LightOJ 1236 Pairs Forming LCM(算术基本定理)

LightOJ 1236 Pairs Forming LCM题意:long long pairsFormLCM( int n ) { long long res = 0; for( i...

Pairs Forming LCM 素数筛和素因子分解

Pairs Forming LCM  :http://acm.hust.edu.cn/vjudge/contest/view.action?cid=109329#problem/B    密码:nef...
  • PNAN222
  • PNAN222
  • 2016年03月18日 21:06
  • 201

lightOJ 1236 Pairs Forming LCM

题目链接:http://lightoj.com/volume_showproblem.php?problem=1236 题意:给你一个数n,让你求满足lcm(a,b)=n的a,b的对数 思路:...

LightOJ 1236 Pairs Forming LCM(lcm(i, j) = n的对数)

题目链接: LightOJ 1236 Pairs Forming LCM 题意:long long pairsFormLCM( int n ) { long long res = 0; ...
  • Ramay7
  • Ramay7
  • 2016年05月29日 11:51
  • 486

1236 - Pairs Forming LCM (唯一分解定理加组合数学)

一、题目链接:传送门 二、题解:  先对n进行素因子分解,时间复杂度近似sqrt(n) / k,k为一个常数。                       假设 n = a1^p1 * a2 ^...

light oj 1236 Pairs Forming LCM(整数分解)

大概题意是找出对于整数对(i,j),他们的lcm为n,这样的整数对有多少。 看了大牛博客才懂,假设lcm(X,Y)=M,分别分解X,Y,M  X=x1^a1*x2^a2... Y=x1^b1*x2^...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LightOJ1236 Pairs Forming LCM 素因子分解
举报原因:
原因补充:

(最多只允许输入30个字)