http://acm.hust.edu.cn/vjudge/contest/view.action?cid=109329#problem/B    全题在文末。

题意:在a,b中(a,b<=n)(1 ≤ n ≤ 1014),有多少组(a,b)  (a<b)满足lcm(a,b)==n;

先来看个知识点:

素因子分解:n = p1 ^ e1 * p2 ^ e2 *..........*pn ^ en

for i in range(1,n):

ei 从0取到ei的所有组合

必能包含所有n的因子。

现在取n的两个因子a,b

a=p1 ^ a1 * p2 ^ a2 *..........*pn ^ an

b=p1 ^ b1 * p2 ^ b2 *..........*pn ^ bn

gcd(a,b)=p1 ^ min(a1,b1) * p2 ^ min(a2,b2) *..........*pn ^ min(an,bn)

lcm(a,b)=p1 ^ max(a1,b1) * p2 ^ max(a2,b2) *..........*pn ^ max(an,bn)

哈哈,又多了种求gcd,lcm的方法。

题解:

先对n素因子分解,n = p1 ^ e1 * p2 ^ e2 *..........*pk ^ ek,

lcm(a,b)=p1 ^ max(a1,b1) * p2 ^ max(a2,b2) *..........*pk ^ max(ak,bk)

所以,当lcm(a,b)==n时,max(a1,b1)==e1,max(a2,b2)==e2,…max(ak,bk)==ek

当ai == ei时,bi可取 [0, ei] 中的所有数  有 ei+1 种情况,bi==ei时同理。

那么就有2(ei+1)种取法,但是当ai = bi = ei 时有重复,所以取法数为2(ei+1)-1=2*ei+1。
除了 (n, n) 所有的情况都出现了两次  那么满足a<=b的有 (2*ei + 1)) / 2 + 1 个

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
const int N=1e7+5;
const int NN=1e6;
unsigned int prime[NN],cnt;           //prime[N]会MLE
bool vis[N];void is_prime()
{cnt=0;memset(vis,0,sizeof(vis));for(int i=2;i<N;i++){if(!vis[i]){prime[cnt++]=i;for(int j=i+i;j<N;j+=i){vis[j]=1;}}}
}int main()
{is_prime();int t;cin>>t;for(int kase=1;kase<=t;kase++){LL n;cin>>n;int ans=1;for(int i=0;i<cnt&&prime[i]*prime[i]<=n;i++){if(n%prime[i]==0){int e=0;while(n%prime[i]==0){n/=prime[i];e++;}ans*=(2*e+1);}}if(n>1)ans*=(2*1+1);printf("Case %d: %d\n",kase,(ans+1)/2);}
}

题目:

B - Pairs Forming LCM

Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

Submit Status

Description

Find the result of the following code:

long long pairsFormLCM( int n ) {
long long res = 0;
for( int i = 1; i <= n; i++ )
for( int j = i; j <= n; j++ )
if( lcm(i, j) == n ) res++; // lcm means least common multiple
return res;
}

A straight forward implementation of the code may time out. If you analyze the code, you will find that the code actually counts the number of pairs(i, j) for which lcm(i, j) = n and (i ≤ j).

Input

Input starts with an integer T (≤ 200), denoting the number of test cases.

Each case starts with a line containing an integer n (1 ≤ n ≤ 1014).

Output

For each case, print the case number and the value returned by the function 'pairsFormLCM(n)'.

Sample Input

15

2

3

4

6

8

10

12

15

18

20

21

24

25

27

29

Sample Output

Case 1: 2

Case 2: 2

Case 3: 3

Case 4: 5

Case 5: 4

Case 6: 5

Case 7: 8

Case 8: 5

Case 9: 8

Case 10: 8

Case 11: 5

Case 12: 11

Case 13: 3

Case 14: 4

Case 15: 2

转载于:https://www.cnblogs.com/shentr/p/5285407.html

Pairs Forming LCM(素因子分解)相关推荐

  1. Pairs Forming LCM LightOJ - 1236

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

  2. Pairs Forming LCM LightOJ - 1236[数论+组合计数]

    题目大意就是问你从1到n里面有多少对数的LCM(i,j)=nLCM(i,j)=nLCM(i,j)=n 我们知道i和j是n的约数i和j是n的约数i和j是n的约数,那么我们就可以将n进行质因子分解LCM是 ...

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

    题意  给你一个数n  求满足lcm(a, b) == n, a <= b 的 (a,b) 的个数 容易知道 n 是a, b的所有素因子取在a, b中较大指数的积 先将n分解为素数指数积的形式 ...

  4. light_oj 1236 求最小公倍数( lcm(a,b) )等于n的数对 素因数分解

    light_oj 1236 求最小公倍数( lcm(a,b) )等于n的数对  素因数分解 H - Pairs Forming LCM Time Limit:2000MS     Memory Lim ...

  5. 【ACM】kuangbin基础数论专题

    知识补充:裴蜀定理 1.Bi-shoe and Phi-shoe 1.题意 给出一行数,求对应的数的欧拉函数值大于给出的数的数的最小和. 2.思路 我们知道素数表的欧拉函数值递增. 设素数a,b,b是 ...

  6. 永远不可能学会的数论之基础数论(例题)

    涉及到知识 1.普通筛选.埃拉托斯特尼筛选.欧拉筛选 Bi-shoe and Phi-shoe Bamboo Pole-vault is a massively popular sport in Xz ...

  7. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  8. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  9. 紫薯第10章数学 kaungbin专题14数论基础

    杂谈 kuangbin14数论Harmonic Number LightOJ - 1234 分段打表 + 欧拉爷爷o(1).(第一次触及了欧拉常熟) 10.1.1 && 10.1.2 ...

最新文章

  1. oracle 取系统当前年份_oracle查询以当前年份为准的近些年数据
  2. Hadoop学习笔记(六)启动Shell分析
  3. Linux下scp无密码上传 下载 文件 目录的方法
  4. 华为mstp多生成树配置_【交换机】交换机如何配置MSTP(多实例生成树协议)
  5. FailSafe双机方案
  6. Facade(装饰模式)
  7. js中不能做变量名的字符
  8. 给C#学习者的建议 - CLR Via C# 读后感
  9. 织梦mysql安装教程视频教程_dedecms织梦模板安装教程视频/图文步骤(模板秀出品)...
  10. 【Hive】Hive表数据的导入导出
  11. “差不多先生”姚劲波和不再神奇的58同城
  12. Linux新手入门教程
  13. excel 公式快速填充下拉方法(WPS表格)
  14. VS2010 旗舰版和专业版 下载
  15. cubietruck下配置aria2+yaaw
  16. python 操作ps_Python实现PS滤镜碎片特效功能示例
  17. pve 不订阅更新_魔兽世界PVE史:第二章 (四)国服那些年
  18. Java五子棋最全教程
  19. SQL 初始篇 软件开发周期 与数据库设计步骤
  20. 树莓派可视化网页仪表盘(pi-dashboard)

热门文章

  1. java 全局代码区_MyEclipse设置全局编码
  2. indesign拖进去颜色变灰_在 InDesign 中管理颜色
  3. mysql语句注意点 2021-05-15
  4. mysql高效索引覆盖索引_MySQL高效索引:覆盖索引
  5. vue-element-admin 设置默认语言
  6. 编码器 stm32_STM32榨干编码旋钮(第一期)
  7. c#语言程序设计上机实验,《C#语言程序设计》实 验 报 告
  8. c语言第五章137页题目及答案,(完整版)C语言程序设计教程第五章练习题题目
  9. androidtv item获取焦点设置动画和背景_动画技术的交互应用所作的动画
  10. mysql添加字典子项_如何使用executemany在MySQL中插入Python字典列表