http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1190

\[\begin{aligned}
&\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的更多相关文章

  1. 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 ...

  2. 51nod 1190 最小公倍数之和 V2【莫比乌斯反演】

    参考:http://blog.csdn.net/u014610830/article/details/49493279 这道题做起来感觉非常奇怪啊--头一次见把mu推出来再推没了的-- \[ \sum ...

  3. 51nod 1238 最小公倍数之和 V3

    51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...

  4. 51NOD 1238 最小公倍数之和 V3 [杜教筛]

    1238 最小公倍数之和 V3 三种做法!!! 见学习笔记,这里只贴代码 #include <iostream> #include <cstdio> #include < ...

  5. 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 ...

  6. 51nod - 1363 - 最小公倍数之和 - 数论

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1363 求\(\sum\limits_{i=1}^{n}lcm(i,n)\) 先换成 ...

  7. [51nod1190]最小公倍数之和V2(莫比乌斯反演)

    题解 传送门 题解 我是真的不明白这玩意儿是怎么跟反演扯上关系的-- 首先 \[ \begin{align} ans &=b\sum_{d|b}{1\over d}\sum_{i=a}^{b} ...

  8. 51nod 1238 最小公倍数之和 V3 【欧拉函数+杜教筛】

    首先题目中给出的代码打错了,少了个等于号,应该是 G=0; for(i=1;i<=N;i++) for(j=1;j<=N;j++) { G = (G + lcm(i,j)) % 10000 ...

  9. [51Nod 1238] 最小公倍数之和 (恶心杜教筛)

    题目描述 求∑i=1N∑j=1Nlcm(i,j)\sum_{i=1}^N\sum_{j=1}^Nlcm(i,j)i=1∑N​j=1∑N​lcm(i,j) 2<=N<=10102<=N ...

随机推荐

  1. 覆盖equals时总要覆盖hashCode

    本文涉及到的概念 1.为什么重载equals方法时,要重载hashCode函数;没有重载hashCode带来的问题 2.一个对象hashCode的生成规则       1.为什么重载equals方法时 ...

  2. 【CodeForces】889 B. Restoration of string

    [题目]B. Restoration of string [题意]当一个字符串在字符串S中的出现次数不小于任意子串的出现次数时,定义这个字符串是高频字符串.给定n个字符串,求构造出最短的字符串S满足着 ...

  3. 【BZOJ】2125: 最短路 圆方树(静态仙人掌)

    [题意]给定带边权仙人掌图,Q次询问两点间最短距离.n,m,Q<=10000 [算法]圆方树处理仙人掌问题 [题解]树上的两点间最短路问题,常用倍增求LCA解决,考虑扩展到仙人掌图. 先对仙人掌 ...

  4. Html5学习4

    1.Html5  Web储存 概念:使用HTML5可以在本地存储用户的浏览数据.早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些 ...

  5. Django(基础篇)

    1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交:        提交 -> url > 函数或类中的方法           ...

  6. Unity MMO 参考数值

    贴图格式: iOS :RGBA 32 (pvrtc 4 ) Android : RGB Compresed ETC 4 或 RGBA 32  . DrawCall: 总计Drawcall 平均 100 ...

  7. 16级第二周寒假作业E题

    Home_W的位运算4 TimeLimit:2000MS  MemoryLimit:128MB 64-bit integer IO format:%I64d Problem Description 给 ...

  8. arch优化开机

    查看开机时间 systemd-analyze 具体开机时间 systemd-analyze blame 你可以systemctl --all | grep not-found 查看有哪些服务挂掉了.然 ...

  9. 超级ping(多线程版)

    发现学校公共wifi的ip段是10.1.0-255.0-255段的,还是之前的思路批量ping一波. 其实可以使用nmap的.但是脚本写都写了.是吧.你懂的. #!/usr/bin/env pytho ...

  10. Mysql 主主复制失败恢复【转】

    Mysql 主主复制失败 Mysql 主主复制失败 故障描述 架构信息 节点信息 故障分析 同步AIPPRD2的从环境 同步AIPPRD1的从环境 故障描述 原因描述 因为机柜PDU老化, 导致整个机 ...