Content

给定 \(n\) 个区间 \([l,r]\),求出每个区间内约数个数最大的数。

数据范围:\(1\leqslant l<r\leqslant 10^{10}\),\(r-l\leqslant 10^4\)。

Solution

你可能需要在做这题目前了解一下约数个数定理。何谓约数个数定理?

设一个数 \(x\) 的个数可以分解为若干个质因数相乘的积,即:

\[x=\prod\limits_{i=1}^k p_i^{a_i}
\]

那么 \(x\) 的约数个数 \(f(x)\) 有一个这样的式子:

\[f(x)=\prod\limits_{i=1}^k(a_i+1)
\]

如何证明?很简单,我们由约数定义可知,\(p_1^{a_1}\) 的约数有:\(p_1^0,p_1^1, p_1^2,\dots,p_1^{a_1}\),共 \(a_1+1\) 个。同理 \(p_2^{a_2}\) 的约数有 \(a_2+1\) 个……以此类推,\(p_k^{a_k}\) 的约数有 \(a_k+1\) 个。因此,由乘法原理可知,\(x\) 的约数个数就是 \((a_1+1)(a_2+1)\dots(a_k+1)=\prod\limits_{i=1}^k(a_i+1)\)。

那么思路就非常清晰明了了:

  1. 预处理出 \(\sqrt{10^{10}}\) 以内的所有质数,可以用埃氏筛也可以用线性筛。
  2. 注意到 \(r-l\leqslant 10^4\),因此我们考虑直接从 \(l\) 到 \(r\) 枚举每一个数。
  3. 枚举每一个数时,我们枚举每一个质数,一旦发现这个质数是当前枚举到的数的因子,我们就不断地将当前枚举的数除以这个质因子,直到这个质数不再是当前述的因子为止。
  4. 设我们除了 \(num\) 次,然后我们往当前枚举的数的约数个数(初始化为 \(1\))去乘 \(num+1\)。当前数的质因子分解完了以后再和当前的答案比较,并更新答案。

Code

namespace Solution {
int cnt, isprime[100007], prime[100007]; iv ai_prime() {
F(int, i, 2, 100000) isprime[i] = 1;
F(int, i, 2, 100000) if(isprime[i]) Fo(int, j, i * 2, 100000, i) isprime[j] = 0;
F(int, i, 2, 100000) if(isprime[i]) prime[++cnt] = i;
} iv Main() {
ai_prime();
MT {
ll l = Rll, r = Rll, ans = 0, res = l;
F(ll, i, l, r) {
ll p = i, num = 1;
for(int j = 1; j <= cnt && prime[j] <= p; ++j) {
ll t = 0;
while(prime[j] && !(p % prime[j])) p /= prime[j], t++;
num *= (t + 1);
}
if(num > ans) res = i, ans = num;
}
printf("Between %lld and %lld, %lld has a maximum of %lld divisors.\n", l, r, res, ans);
}
return;
}
}

UVA294 约数 Divisors 题解的更多相关文章

  1. 洛谷P2424 约数和 题解

    题目 约数和 题解 此题可以说完全就是一道数学题,不难看出这道题所求的是 \(\sum\limits_{i=x}^{y}{\sum\limits_{d|i}{d}}\) 的值. 很显然,用暴力枚举肯定 ...

  2. P1403 [AHOI2005]约数研究 题解

    转载luogu某位神犇的题解QAQ 这题重点在于一个公式: f(i)=n/i 至于公式是怎么推出来的,看我解释: 1-n的因子个数,可以看成共含有2因子的数的个数+含有3因子的数的个数……+含有n因子 ...

  3. 【SP26073】DIVCNT1 - Counting Divisors 题解

    题目描述 定义 \(d(n)\) 为 \(n\) 的正因数的个数,比如 \(d(2) = 2, d(6) = 4\). 令 $ S_1(n) = \sum_{i=1}^n d(i) $ 给定 \(n\ ...

  4. CF893B Beautiful Divisors 题解

    Content 给定一个数 \(n\),求出 \(n\) 最大的可以表示成 \((2^k-1)\cdot2^{k-1}\) 形式的因数 \(x\). 数据范围:\(1\leqslant n\leqsl ...

  5. Yaroslav and Divisors

    Codeforces Round #182 (Div. 1) D:http://codeforces.com/contest/301/problem/D 题意:给一个1-n,n个数的序列,然后查询一个 ...

  6. 【BZOJ3994】约数个数和(莫比乌斯反演)

    [BZOJ3994]约数个数和(莫比乌斯反演) 题面 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] 多组数据\((<=50000组)\) \(n,m<=50000\ ...

  7. BZOJ1968 [Ahoi2005]COMMON 约数研究 数论

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1968 题意概括 求 ΣF(i)   (1<=i<=n)N<=1000000 F( ...

  8. 【51NOD 1847】奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数)

    [51NOD 1847]奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数) 题面 51NOD \[\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j)^k\] 其中\( ...

  9. 「loj3058」「hnoi2019」白兔之舞

    题意 有一个\((L+1)*n\) 的网格图,初始时白兔在\((0,X)\) , 每次可以向横坐标递增,纵坐标随意的位置移动,两个位置之间的路径条数只取决于纵坐标,用\(w(i,j)\) 表示,如果要 ...

随机推荐

  1. Lilypond+TexLive(LuaLatex+lyluatex)+VS Code实现谱文混排

    没想到发文章反而更难被预览了,那就复制一份到随笔里好了. 多次尝试之下,终于实现了现阶段谱文混排的最理想方式: 1. 综合Latex的排版(还有广泛适用人群)的优势以及Lilypond的美观优势: 2 ...

  2. tomcat的log日志乱码解决方案

    Intellij idea Tomcat输出log中文乱码 配置tomcat在VM options添加-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 重启后控 ...

  3. ElasticJob分布式任务调度应用v2.5.2

    为何要使用分布式任务调度 **本人博客网站 **IT小神 www.itxiaoshen.com 演示项目源码地址** https://gitee.com/yongzhebuju/spring-task ...

  4. [NOI2020] 超现实树

    我们定义链树为:在该树上的任意节点,左右子树大小的最小值小于2. 举个例子: 那么我们思考,链树显然可以在叶子节点任意替换成其他子树. 那么在主链上,我们可以做到生成任意深度大于主链长度的树. 反过来 ...

  5. 回文字符串 Manacher

    1. Manacher 忘光了,忘光了. 首先将字符串所有字符之间(包括头尾)插入相同分隔符,再在最前方插入另一个分隔符防止越界. 设以 \(s_i\) 为对称中心的回文串中,最长的回文半径为 \(p ...

  6. miRNA 基本知识

    miRNA MicroRNA (miRNA)  是一类内生的.长度约为20-24个核苷酸的小 RNA,其在细胞内具有多种重要的调节作用.每个 miRNA 可以有多个靶基因的表达,而几个 miRNA 也 ...

  7. PhantomJS的安装和使用

    PhantomJS是一个无界面的.可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作.CSS选择器.JSON.Canvas以及SVG.Selenium支持PhantomJS,这样 ...

  8. 【STM32】晶振,主时钟,外设频率介绍

    首先,我用的是STM32F407,下方所有图片都是出自这芯片的文档,如果型号和我不同,需要找到对应的芯片说明文档,也许会有出入 先看一张时钟图 这里会着重说明高速的部分,低速(不管内部还是外部)只给R ...

  9. oracle 预安装命令

     yum install oracle-rdbms-server-11gR2-preinstall-1.0-6.el6 

  10. Linux基础命令---smbpasswd管理samba密码

    smbpasswd smbpasswd指令可以用来修改samba用户的的密码,该指令不仅可以修改本地samba服务器的用户密码,还可以修改远程samba服务器的用户密码. 此命令的适用范围:RedHa ...