Description

Input

题解:

这次是多组询问,上次推出来的式子是 $O(n)$ 的,我们需要更快的算法.
 
先定义几个后面可能会用到的函数:(在本题弱化版中推出来的)
 
$Sum(n,m)=\frac{n(n+1)}{2}\times \frac{m(m+1)}{2}$
 
$calc(n,m)=\sum_{d=1}^{n}\mu(d)d^2Sum(\frac{n}{d},\frac{m}{d})$
 
则 $ans=\sum_{d=1}^{n}d\times calc(\frac{n}{d},\frac{m}{d})$
 
把式子展开:
 
$=\sum_{d=1}^{n}d\sum_{b=1}^{\frac{n}{d}}\mu(b)b^2Sum(\frac{n}{db},\frac{m}{db})$
 
令 $D=db$ ,得:
 
$\sum_{D=1}^{n}Sum(\frac{n}{D},\frac{m}{D})\sum_{d|D}d\times\mu(\frac{D}{d})\times(\frac{D}{d})^2$ 
 
看上去有点别扭,再稍微改动一下:
 
$\sum_{D=1}^{n}Sum(\frac{n}{D},\frac{m}{D})\sum_{d|D}\frac{D}{d}\times\mu(d)\times d^2$ 
 
前面 $\sum_{D=1}^{n}Sum(\frac{n}{D},\frac{m}{D})$ 这个部分好像没法优化了,只能$\sqrt{n}$ 硬算.
 
好在 $f(D)=\sum_{d|D}\frac{D}{d}\times\mu(d)\times d^2$ 是一个积性函数,可以线筛.
 
只需分三种情况讨论即可:
 
(1) $x$ 为质数.$\Rightarrow$ $f(x)=x^{2}-x$ (只有 $d=1,d=D$ 时有贡献)
 
(2) $a,b$ 互质.$\Rightarrow$ $f(ab)=f(a)f(b)$ (积性函数定义)
 
(3) $p|i$ ,且 $p$ 为质数, $i$ 中 $p$ 的指数为 $1$
 
$f(i)=\sum_{d|i}\frac{i}{d}\times\mu(d)\times d^2$
 
$f(i\times p)=\sum_{d|i\times p}\frac{i\times p}{d}\times\mu(d)\times d^2$
 
由 $\mu$ 的定义可知,当一个数有质因子次幂大于 $1$ 时值为 $0$ ,即无贡献.
 
那么,$f(i\times p)$ ,$d$ 中 $p$ 的幂次必小于等于 $1$.
 
而 $f(i)$ 中所有 $d$ 中 $p$ 的次幂本来就小于等于 $1$.
 
故 $f(i)$ 与 $f(i\times p)$ 中有贡献的因子是完全相同的.
 
唯一不同就是 $f(i\times p)=f(i)\times p$
 
既然讨论好上面 $3$ 种情况,我们就可以愉快地线筛 $f(x)$ 啦!!
#include<bits/stdc++.h>
#define ll long long
#define M 10001000
#define maxn 10200100
#define MOD 100000009
using namespace std;
int cnt, tot;
int vis[maxn],mu[maxn], prime[maxn];
ll h[maxn], sumv[maxn];
void init()
{
int i,j;
h[1]=1;
for(i=2;i<M;++i)
{
if(!vis[i]) prime[++tot]=i, h[i]=(i-(ll)i*i)%MOD;
for(j=1;j<=tot&&prime[j]*i<M;++j)
{
vis[prime[j]*i]=1;
if(i%prime[j]==0)
{
h[prime[j]*i]=(prime[j]*h[i])%MOD;
break;
}
else h[prime[j]*i]=(h[prime[j]]*h[i])%MOD;
}
}
for(i=1;i<M;++i) sumv[i]=(sumv[i-1]+h[i])%MOD;
}
ll SUM(ll x,ll y)
{
x%=MOD, y%=MOD;
ll r1=(x*(x+1)>>1)%MOD;
ll r2=(y*(y+1)>>1)%MOD;
return (r1*r2)%MOD;
}
ll query(ll n,ll m)
{
int i,last,re=0,j;
if(n>m) swap(n,m);
for(i=1;i<=n;i=j+1)
{
j=min(n/(n/i), m/(m/i));
re += SUM(n/i, m/i) * (sumv[j]-sumv[i-1])%MOD;
re%=MOD;
}
return (re+MOD)%MOD;
}
int main()
{
init();
int n,m,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%lld\n",query(n,m));
}
return 0;
}

  

BZOJ 2693: jzptab 莫比乌斯反演 + 积性函数 +筛法的更多相关文章

  1. bzoj 2693: jzptab 线性筛积性函数

    2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 444  Solved: 174[Submit][Status][Discus ...

  2. BZOJ 2694: Lcm 莫比乌斯反演 + 积性函数 + 线性筛 + 卡常

    求 $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\mu(gcd(i,j))^2$   $\Rightarrow \sum_{d=1}^{n}\mu(d)^2\sum_{i ...

  3. BZOJ 2693: jzptab [莫比乌斯反演 线性筛]

    2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1194  Solved: 455[Submit][Status][Discu ...

  4. BZOJ 2693 jzptab ——莫比乌斯反演

    同BZOJ 2154 但是需要优化 $ans=\sum_{d<=n}d*\sum_{i<=\lfloor n/d \rfloor} i^2 *\mu(i)* Sum(\lfloor \fr ...

  5. BZOJ 2693: jzptab( 莫比乌斯反演 )

    速度居然#2...目测是因为我没用long long.. 求∑ lcm(i, j) (1 <= i <= n, 1 <= j <= m) 化简之后就只须求f(x) = x∑u( ...

  6. 【BZOJ】2693: jzptab 莫比乌斯反演

    [题意]2154: Crash的数字表格 莫比乌斯反演,多组询问,T<=10000. [算法]数论(莫比乌斯反演) [题解]由上一题, $ans=\sum_{g\leq min(n,m)}g\s ...

  7. bzoj2693--莫比乌斯反演+积性函数线性筛

    推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和 ...

  8. $BZOJ$2818 $gcd$ 莫比乌斯反演/欧拉函数

    正解:莫比乌斯反演/欧拉函数 解题报告: 传送门$QwQ$ 一步非常显然的变形,原式=$\sum_{d=1,d\in prim}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd ...

  9. 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)

    BZOJ 2154 crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b ...

随机推荐

  1. MySQL-数据表锁定

    MySQL允许客户端会话明确获取表锁,以防止其他会话在特定时间段内访问表.客户端会话只能为自己获取或释放表锁.它不能获取或释放其他会话的表锁. 创建一个数据表: CREATE DATABASE IF ...

  2. 洛谷 P1759 通天之潜水

    P1759 通天之潜水 19通过 65提交 题目提供者lych 标签动态规划洛谷原创 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 直达通天路·小A历险记第三篇 题目 ...

  3. servlet container:tomcat jetty and undertow

    1 spring boot内嵌容器支持tomcat.jetty和undertow 但是undertow性能最好,详见: https://examples.javacodegeeks.com/enter ...

  4. iOS开发个人开发账号的证书详细使用及介绍

    本人也和大家一样在学习iOS的开发,在开发当中最烦的就是证书出问题,主要是没有理解透证书的含义,因此查阅了一些资料,才对证书有了一定的认识,本文章就是介绍个人的个人理解,有不对的地方大加可以留言提醒, ...

  5. JS如何遍历一个文件夹下的所有文件与目录(转)

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. 0621补-MVC的基础整理

    包括:Model-模型.view-视图.Controller-控制器. 特点: 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件,该PHP逻辑文件, ...

  7. 10.11NOIP模拟题(3)

    /* 可以看出,对于一段区间[L,R]如果统计了答案 若a[L]<a[R],那么当右端点往左移时答案不会更优,a[R]>a[L]同理 所以两个指针分别从头尾往中间扫那边小移哪边即可. */ ...

  8. 13、git

    安装Git 网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK.(windows下载exe安装包,linux可以使 ...

  9. Winform执行CMD命令

    1.首先分享CmdHelper类: using System; using System.Collections.Generic; using System.Text; using System.Di ...

  10. 【杂谈】HTML5到底给了我们什么?迟到的2016年终总结

    其实提笔的时候日期已经到了3月了,不过由于在过去的2016年笔者发生了蛮多的事情,所以还是决定记录一下,那些关于成长的片段. 其实HTML5是在2012年的时候接触的,当时和结果志趣相投的同事,看到了 ...