【51Nod 1190】最小公倍数之和 V2
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1190
&\sum_{i=a}^b\frac{ib}{(i,b)}\\
=&b\sum_{i=a}^b\frac i{(i,b)}\\
=&b\sum_{d|b}\sum_{i=a}^b[d|i]\left[\left(\frac id,\frac bd\right)=1\right]\frac id\\
=&b\sum_{d|b}\sum_{i=\left\lceil\frac ad\right\rceil}^{\frac bd}\left[\left(i,\frac bd\right)=1\right]i\\
=&b\sum_{d|b}\sum_{i=\left\lceil\frac ad\right\rceil}^{\frac bd}i\sum_{d'|i,d'|\frac bd}\mu(d')\\
=&b\sum_{d|b}\sum_{d'|\frac bd}\mu(d')\sum_{i=\left\lceil\frac {a}{dd'}\right\rceil}^{\frac{b}{dd'}}id'\\
=&b\sum_{T|b}\sum_{d|T}\mu(d)\sum_{i=\left\lceil\frac aT\right\rceil}^{\frac bT}id\\
=&b\sum_{T|b}\frac{\left(\left\lceil\frac aT\right\rceil+\frac bT\right)\left(\frac bT-\left\lceil\frac aT\right\rceil+1\right)}{2}\sum_{d|T}\mu(d)d
\end{aligned}
\]
\(\sum\limits_{d|T}\mu(d)d=\prod\left(1-p_i\right)\),只要确定T的质因子就可以确定\(\sum\limits_{d|T}\mu(d)d\)的值。
如果循环枚举T找b的约数,无法快速计算T的质因子。
可以dfs枚举b的约数T,动态计算\(\sum\limits_{d|T}\mu(d)d\)的值。
时间复杂度\(O\left(T\sqrt n\right)\)。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 100000;
const int p = 1000000007;
const int ni2 = 500000004;
bool notp[N];
int a, b, tot, P[N], c[N], num = 0, prime[N];
void Euler_shai() {
for (int i = 2; i <= N; ++i) {
if (!notp[i]) prime[++num] = i;
for (int j = 1; j <= num && prime[j] * i <= N; ++j) {
notp[prime[j] * i] = true;
if (i % prime[j] == 0) break;
}
}
}
void pre(int x) {
tot = 0;
for (int i = 1, pi = 2; i <= num && pi * pi <= x; pi = prime[++i])
if (x % pi == 0) {
P[++tot] = pi; c[tot] = 0;
while (x % pi == 0) x /= pi, ++c[tot];
}
if (x > 1)
P[++tot] = x, c[tot] = 1;
}
int ans;
void dfs(int tmp, int T, int f) {
if (tmp > tot) {
int l = a / T, r = b / T;
if (a % T) ++l;
(ans += 1ll * (l + r) * (r - l + 1) % p * ni2 % p * f % p) %= p;
return;
}
dfs(tmp + 1, T, f);
int tt = T, ff = 1ll * f * (1 - P[tmp] + p) % p;
for (int i = 1; i <= c[tmp]; ++i) {
tt *= P[tmp];
dfs(tmp + 1, tt, ff);
}
}
int main() {
Euler_shai();
int T; scanf("%d", &T);
while (T--) {
scanf("%d%d", &a, &b);
pre(b);
ans = 0;
dfs(1, 1, 1);
printf("%lld\n", 1ll * b * ans % p);
}
return 0;
}
【51Nod 1190】最小公倍数之和 V2的更多相关文章
- 51nod 1190 最小公倍数之和 V2
给出2个数a, b,求LCM(a,b) + LCM(a+1,b) + .. + LCM(b,b). 例如:a = 1, b = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30 ...
- 51nod 1190 最小公倍数之和 V2【莫比乌斯反演】
参考:http://blog.csdn.net/u014610830/article/details/49493279 这道题做起来感觉非常奇怪啊--头一次见把mu推出来再推没了的-- \[ \sum ...
- 51nod 1238 最小公倍数之和 V3
51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...
- 51NOD 1238 最小公倍数之和 V3 [杜教筛]
1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...
- 51nod 1363 最小公倍数之和 ——欧拉函数
给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66. 由于结果很大,输出Mod 1000 ...
- 51nod - 1363 - 最小公倍数之和 - 数论
https://www.51nod.com/Challenge/Problem.html#!#problemId=1363 求\(\sum\limits_{i=1}^{n}lcm(i,n)\) 先换成 ...
- [51nod1190]最小公倍数之和V2(莫比乌斯反演)
题解 传送门 题解 我是真的不明白这玩意儿是怎么跟反演扯上关系的-- 首先 \[ \begin{align} ans &=b\sum_{d|b}{1\over d}\sum_{i=a}^{b} ...
- 51nod 1238 最小公倍数之和 V3 【欧拉函数+杜教筛】
首先题目中给出的代码打错了,少了个等于号,应该是 G=0; for(i=1;i<=N;i++) for(j=1;j<=N;j++) { G = (G + lcm(i,j)) % 10000 ...
- [51Nod 1238] 最小公倍数之和 (恶心杜教筛)
题目描述 求∑i=1N∑j=1Nlcm(i,j)\sum_{i=1}^N\sum_{j=1}^Nlcm(i,j)i=1∑Nj=1∑Nlcm(i,j) 2<=N<=10102<=N ...
随机推荐
- 【BZOJ】1741: [Usaco2005 nov]Asteroids 穿越小行星群
[题意]给定n*n网格,有k个物品,每次可以消灭一行或一列,求消灭掉所有物品的最少操作次数. [算法]二分图最小覆盖 [题解]此题是最小覆盖模型的出处. 将物品的x-y连边建立二分图. 最小覆盖:选择 ...
- 【CodeForces】901 B. GCD of Polynomials
[题目]B. GCD of Polynomials [题意]给定n,要求两个最高次项不超过n的多项式(第一个>第二个),使得到它们GCD的辗转次数为n.n<=150. [算法]构造 [题解 ...
- 牛客网习题剑指offer之数值的整数次方
分析: 要考虑到exponent为0和负数的情况. 如果base是0并且exponent是负数的时候呢?那就发生除0的情况了. AC代码: public class Solution { public ...
- php查询mysql返回大量数据结果集导致内存溢出的解决方法
web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答 ...
- webconfig的配置解析
<?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...
- 大数据系列之Hadoop框架
Hadoop框架中,有很多优秀的工具,帮助我们解决工作中的问题. Hadoop的位置 从上图可以看出,越往右,实时性越高,越往上,涉及到算法等越多. 越往上,越往右就越火…… Hadoop框架中一些简 ...
- python3.x的HTMLTestRunner.py文件
"""A TestRunner for use with the Python unit testing framework. Itgenerates a HTML re ...
- Python 中的闭包与装饰器
闭包(closure)是函数式编程的重要的语法结构.闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性. 如果在一个内嵌函数里,对在外部函数内(但不是在全局作用域)的变量进行引用,那么内嵌函数 ...
- MySQL启动很慢的原因
我们在启动MySQL的时候,常常会遇到的是, 当执行启动命令后,它会"Start MySQL ....." 一直不停的执行,也不中断,也不成功 这里会出现此现象的原因有以下三条: ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN
转载请注明,本文出自Bin的专栏http://blog.csdn.net/xbinworld,谢谢! DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Process ...