题意:求有多少对数对(i,j)满足lcm(i,j) = n,1<=i<=j, 1<=n<=1e14。

分析:根据整数的唯一分解定理,n可以分解为(p1^e1)*(p2^e2)*(p3^e3)*...*(pn^en)。其中pi是每个不同的素因子。

同样可将 i 和 j 分解为(a1^c1)*(a2^c2)^(a3^c3)...(an^cn) 和 (b1^d1)*(b2^d2)*(b3^d3)*...(bn^dn)。

因为lcm(i,j) = n。所以对任意 i,都有max(ci,di)= ei ,0 <= min(ci,di) <= ei,所以对n的每个素因子,都有2*(ei+1)-1种情况(减1是因为ci=di=ei的情况被算了2次)。

所有的可能 t 就是 (2ei+1)之积。这是有序对的数量,求无序对的时候 将 (t+1)/2,加1是因为(n,n)的情况本身只有一种可能。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn =1e7+5;
const int INF =0x3f3f3f3f;bool notprime[maxn<<1];
vector<int> prime;//prime[0] 表示当前范围内有多少素数,prime[i] 表示第i个素数是多少
void pre()
{memset(notprime,0,sizeof(notprime));notprime[0] = notprime[1] = true;for(int i=2;i<maxn;++i){if(!notprime[i]) prime.push_back(i);for(int j=0 ; j<prime.size() && prime[j] <= maxn / i ;++j){notprime[prime[j]*i] = true;if(i%prime[j]==0) break;}}
}LL getFactor(LL n)
{LL tmp = n , res=1;for(int i=0;i<prime.size() && prime[i]*prime[i]<=tmp;++i){int cnt =0;while(tmp%prime[i]==0){cnt++;tmp/=prime[i];}res *=(2*cnt +1 );}if(tmp>1) res*= 3;   res++;res>>=1;return res;
}int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifpre();int T,N,u,v,tmp,cas=1;scanf("%d",&T);while(T--){LL n; scanf("%lld",&n);LL res= getFactor(n);printf("Case %d: %lld\n",cas++,res);}return 0;
}

转载于:https://www.cnblogs.com/xiuwenli/p/9448342.html

LightOJ - 1236 (唯一分解定理)相关推荐

  1. Mysterious Bacteria LightOJ - 1220[唯一分解定理+思维题]

    题目大意:就是给你一个数n问这个数是什么数的整数幂,输出这个幂指数,如果有多个输出幂指数最大的那个 就是对于一个数n=p1a1∗p2a2∗...∗pxaxn=p_1^{a_1}*p_2^{a_2}*. ...

  2. lightoj 1236 正整数唯一分解定理

    A - (例题)整数分解 Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:32768KB     6 ...

  3. LightOJ 1220 Mysterious Bacteria(唯一分解定理) (素数筛)

    题干: 给你一个整数x,令x= b p b^p bp(b,p都为整数),求p的最大值. x为32位有符号整型. 思路: 首先,素数因为不能被除1和它自身外整除,所以x为素数时p=1: x为合数时,根据 ...

  4. Pairs Forming LCM LightOJ - 1236

    Pairs Forming LCM LightOJ - 1236 题意 问共有多少组数的最大公约数是n 分析 组合数学 ,唯一分解定理 参考代码 int Prime[670000]; const in ...

  5. 唯一分解定理一篇就够了

    如果与唯一定理一起应用需要用到素数筛,可以看这篇文章: 线性筛判断素数 唯一分解定理: 任何一个大于1的自然数 N,如果N不为质数,**那么N可以唯一分解成有限个质数的乘积: 这里P1<P2&l ...

  6. 欧几里得算法与唯一分解定理

    整理的算法模板合集: ACM模板 目录 最大公约数与最大公倍数 唯一分解定理 快速分解质因子 最大公约数与最大公倍数 最多O(logn)O(logn)O(logn) int gcd(int a, in ...

  7. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...

  8. 唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341

    算数分解定理(唯一分解定理): 定义: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3-Pnan,这里P1<P2<P3-& ...

  9. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)

    给一棵树,树上每个节点有一个权值,有两个操作,RAND操作查询u的子树乘积是多少以及有多少因数,SEED操作把节点u乘上v n,q <= 1e5.数值小于等于1e9,最大的质因数不超过13 组队 ...

最新文章

  1. zabbix客户端安装二
  2. linux怎么让某一个组对一文件可读可写,设置linux文件权限,使得同一用户组的可以对一个文件自由修改...
  3. cad怎么查找未闭合_CAD无法填充的这四种方法肯定能解你燃眉之急
  4. eclipse juno_放弃Eclipse Juno
  5. java面试没有全部答对_十道java基础面试题,你能保证全答对吗?
  6. 一步一步學習partition之range分區如何創建
  7. MX250和MX350哪个好一点,区别和差距在哪里?
  8. 【Java从0到架构师】RocketMQ 基础 - 应用、核心组件、安装
  9. mysql多字段分库分表基因码_一文学会常用 MySQL 分库分表方案
  10. 8. JavaScript 全局对象
  11. java bean vo_关于JavaBean和vo的解释
  12. 【转】LaTeX 符号命令大全
  13. 计算机查看配置的快捷键,剪映电脑版快捷键在哪里设置? 剪映查看快捷键的技巧...
  14. 软件项目经理应具备的素质和条件_软件项目经理素质能力的必备要求
  15. 公众号h5拼团购买业务梳理
  16. 小米路由器3有信号无网络连接到服务器,小米路由器3上不了网(不能上网)怎么办?...
  17. 数据集市是什么?数据集市和数据仓库有什么区别
  18. Redis面试题从基础到进阶
  19. 射频测试系统软件,通用射频自动测试系统解决方案
  20. 长沙夜经济,每天双十一

热门文章

  1. pl/sql to_date
  2. PREV-3_蓝桥杯_带分数
  3. 1099 字串变换 2002年NOIP全国联赛提高组
  4. hdu 1286 找新朋友 欧拉函数模版题
  5. Android学习笔记ListView
  6. SSH2+Daoz项目中的分页查询
  7. UINavigationbar的背景修改方法集合
  8. C# WinForm 软件注册的实现
  9. s5-14 链路状态路由选择
  10. python编写界面遍历_python和pywin32实现窗口查找、遍历和点击