题目链接:https://cn.vjudge.net/problem/LightOJ-1236

题意

给一整数n,求有多少对a和b(a<=b),使lcm(a, b)=n

注意数据范围n<=10^14

思路

唯一分解定理

要注意的是条件a<=b,这就是说,在不要求大小关系的情况下

ans包括a<b,a>b和a==b的情形,最终答案就是(ans+1)/2

注意数据范围,求因数时使用1e7的素数即可,剩余的未被分解的数一定是大素数

首先求一下素数加速求因数,其次注意prime*prime<=n是另一优化

提交过程

TLE1 没注意数据范围,用了没有优化的getFactors
WA*n 模版有问题,一直在尝试优化
WA 注意ans=factors[i][0]2+1;
TLE2 第二个prime*prime<=n的优化没做
WA 注意long long范围
AC

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1e7+20;
int factors[100][2], fsize, primes[maxn/10], psize;
bool isprime[maxn];
void initPrimes(void){
memset(isprime, true, sizeof(isprime));
isprime[0]=isprime[1]=false;
for (int i=2; i<=maxn; i++){
if(isprime[i]) primes[psize++]=i;
for (int j=0; j<psize && i*primes[j]<=maxn; j++){
isprime[primes[j]*i]=false;
if (i%primes[j]==0) break;
}
}
} void getFactors(long long n){
fsize=0;
for (int i=0; i<psize && primes[i]*primes[i]<=n; i++){
if (n%primes[i]==0){
factors[fsize][0]=primes[i];
factors[fsize][1]=0;
while (n%primes[i]==0) factors[fsize][1]++, n/=primes[i];
fsize++;
}
}
if (n>1){
factors[fsize][0]=n;
factors[fsize++][1]=1;
}
} long long solve(long long n){
long long ans=1;
getFactors(n);
for (int i=0; i<fsize; i++)
ans*=factors[i][1]*2+1;
return (ans+1)/2;
} int main(void){
int T, kase=0;
long long n; initPrimes();
scanf("%d", &T);
while (T--){
scanf("%lld", &n);
printf("Case %d: %lld\n", ++kase, solve(n));
} return 0;
}
Time Memory Length Lang Submitted
540ms 14760kB 1096 C++ 2018-07-30 15:45:20

LightOJ-1236 Pairs Forming LCM 唯一分解定理的更多相关文章

  1. LightOJ - 1236 - Pairs Forming LCM(唯一分解定理)

    链接: https://vjudge.net/problem/LightOJ-1236 题意: Find the result of the following code: long long pai ...

  2. LightOJ 1236 Pairs Forming LCM (LCM 唯一分解定理 + 素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1236 Pairs Forming LCM Time Limit:2000MS     Memor ...

  3. LightOJ 1236 - Pairs Forming LCM(素因子分解)

    B - Pairs Forming LCM Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  4. LightOj 1236 Pairs Forming LCM (素数筛选&&唯一分解定理)

    题目大意: 有一个数n,满足lcm(i,j)==n并且i<=j时,(i,j)有多少种情况? 解题思路: n可以表示为:n=p1^x1*p2^x1.....pk^xk. 假设lcm(a,b) == ...

  5. LightOj 1236 - Pairs Forming LCM (分解素因子,LCM )

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1236 题意:给你一个数n,求有多少对(i,  j)满足 LCM(i, j) = n, ...

  6. LightOJ 1236 Pairs Forming LCM【整数分解】

    题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1236 题意: 找与n公倍数为n的个数. 分析: ...

  7. LightOJ 1236 Pairs Forming LCM 合数分解

    题意:求所有小于等于n的,x,y&&lcm(x,y)==n的个数 分析:因为n是最小公倍数,所以x,y都是n的因子,而且满足这样的因子必须保证互质,由于n=1e14,所以最多大概在2^ ...

  8. 1236 - Pairs Forming LCM

    1236 - Pairs Forming LCM   Find the result of the following code: long long pairsFormLCM( int n ) {  ...

  9. Light oj 1236 - Pairs Forming LCM (约数的状压思想)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1236 题意很好懂,就是让你求lcm(i , j)的i与j的对数. 可以先预处理1e7以 ...

随机推荐

  1. ZBrush通过遮罩得到子物体

    ZBrush 中通过遮罩为模型添加子物体的方法简单且方便,我们可以通过按住Ctrl键绘制遮罩结合相关命令创建具有抽出厚度的模型提取出作为子物体附在模型表面.本文将详细介绍在Zbrush中如何通过遮罩得 ...

  2. Linux网络配置、文件及命令

    Linux的网络配置是曾一直是我学习Linux的埋骨之地,投入了大量的精力和心神但是自己的虚拟机就是联不了网.原来一个大意,我一躺就是一年半.在这里简单的谈谈我对网络的微微认识. VMware的联网模 ...

  3. 移动端和pc端的判断,不同端做不同的处理

    1.通过js判段是pc端还是移动端 function browserRedirect() { var type = ""; var sUserAgent = navigator.u ...

  4. git diff详解

    这篇文章很好很好 https://www.cnblogs.com/alfayed/p/4682780.html

  5. java中内存溢出和内存泄漏的区别

    虽然在java中我们不用关心内存的释放, 垃圾回收机制帮助我们回收不需要的对象,但实际上不正当的操作也会产生内存问题:如,内存溢出.内存泄漏 内存溢出:out of memory:简单通俗理解就是内存 ...

  6. 2019-03-18 OpenCV Tesseract-OCR 下载 安装 配置(cv2 报错)

    OpenCV 下载 安装 配置 1.下载和Python版本对应的版本,此为下载地址 2.安装(在powershell管理员模式下安装) pip3 install .\opencv_python-3.4 ...

  7. 小白神器 - 两篇博客读懂JavaScript (一基础篇)

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一. 编写格式 1, ...

  8. plsql 中出现 Dynamic Performance Tables not accessible 问题解决

    产生该提示原因: plsql dev在用户运行过程中,要收集用户统计信息,但是由于你现在登录的用户没有访问v$session,v$sesstat and v$statname视图的权限, 所以不能收集 ...

  9. js兼容性——获取当前浏览器窗口的宽高

    通过onresize事件 window.onresize = function () { document.title = client().width + " "+ client ...

  10. 洛谷 P2111 考场奇遇

    P2111 考场奇遇 题目背景 本市的某神校里有一个学霸,他的名字叫小明(为了保护主人公的隐私,他的名字都用“小明”代替).在这次的期中考试中,小明同学走桃花运,在考场上认识了一位女生,她的名字叫小红 ...