bzoj2693
线性筛+莫比乌斯反演
盗波图 来自candy?大神

反演很重要的一条公式就是[gcd(i,j)==1]=
线性筛怎么推呢?
我们分4个步骤,1.先推出f[1],2.推出f[p],p是一个质数,3.由于线性筛筛的是积性函数,那么当gcd(i,p[j])==1的时候,f[i*p[j]]=f[i]*f[p[j]],4.前三步都比较简单,第四步是if(i%p[j]==0)该怎么办

我们是要推这个东西的值,因为积性函数的约数和也是积性函数,所以这个也可以筛,那么我们考虑对于当前的D,我们用一个pri筛到了D,而且D%pri==0,然后思考一下,这个pri能给这个式子带来什么贡献呢?
很明显,i肯定是几个质数的乘积,否则mu[i]==0,没有意义,那么这个pri肯定对约数和没有贡献了,因为之前筛到的时候已经被计算过了,那个*i^2自然也是不可能受到pri的影响,但是我们看看那个D,现在我们求的是f[D*pri],那么自然D得乘上pri,所以我们得出现在f[i*pri]=f[i]*pri
大概是这样吧
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = , mod = ;
int n, m, T;
int mu[N], p[N];
bool mark[N];
ll f[N];
void ini()
{
mu[] = f[] = ;
for(int i = ; i <= ; ++i)
{
if(!mark[i])
{
p[++p[]] = i;
mu[i] = -;
f[i] = ((-(ll)i * (ll)i + i) % mod + mod) % mod;
}
for(int j = ; j <= p[] && i * p[j] <= ; ++j)
{
mark[i * p[j]] = ;
if(i % p[j] == )
{
mu[i * p[j]] = ;
f[i * p[j]] = f[i] * p[j] % mod;
break;
}
f[i * p[j]] = f[i] * f[p[j]] % mod;
mu[i * p[j]] = -mu[i];
}
}
for(int i = ; i <= ; ++i) f[i] = (f[i] + f[i - ]) % mod;
}
ll Sum(ll x, ll y)
{
return (x * (x + 1ll) / 2ll % mod) % mod * (y * (y + 1ll) / 2ll % mod) % mod;
}
void solve(int n, int m)
{
if(n > m) swap(n, m);
ll ret = ;
for(int i = , j = ; i <= n; i = j + )
{
j = min(n / (n / i), m / (m / i));
ret = (ret + Sum(n / i, m / i) % mod * ((f[j] - f[i - ]) % mod + mod) % mod) % mod;
}
printf("%lld\n", ret);
}
int main()
{
ini();
for(cin >> T; T; --T)
{
scanf("%d%d", &n, &m);
solve(n, m);
}
return ;
}
bzoj2693的更多相关文章
- 【BZOJ2693】jzptab(莫比乌斯反演)
[BZOJ2693]jzptab(莫比乌斯反演) 题面 讨厌权限题,只能跑到别的OJ上交 和这题是一样的 多组数据 求\[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 题解 前 ...
- 题解-bzoj2154Crash的数字表格 & bzoj2693 jzptab
Problem bzoj2818-单组询问-无权限 bzoj2693-多组询问-需权限 洛谷1829-单组询问-无权限 \(T\)组询问(如果有),给定 \(n,m\),求 \[\sum_{i=1}^ ...
- BZOJ2154/BZOJ2693/Luogu1829 Crash的数字表格/JZPFAR 莫比乌斯反演
传送门--Luogu 传送门--BZOJ2154 BZOJ2693是权限题 其中JZPFAR是多组询问,Crash的数字表格是单组询问 先推式子(默认\(N \leq M\),所有分数下取整) \(\ ...
- 【BZOJ2693】jzptab & 【BZOJ2154】Crash的数字表格
题目 弱化版题目的传送门([BZOJ2154]Crash的数字表格) 加强版题目的传送门([BZOJ2693]jzptab) 思路&解法 题目是要求: \(\sum\limits_{i = 1 ...
- BZOJ2154: Crash的数字表格 & BZOJ2693: jzptab
[传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...
- BZOJ2693: jzptab
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:同2154 多组数据 题解:按2154再往后转化一下就可以把n,m放到一边儿,然后 ...
- 【BZOJ2693】jzptab
Time Limit: 5000 ms Memory Limit: 512 MB description 给你\(n, m\),求\(\sum\limits_{i=1}^{n}\sum\limits_ ...
- 【bzoj2693】jzptab 莫比乌斯反演+线性筛
题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...
- BZOJ2693:JZPTAP——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2693 Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 ...
- 【BZOJ2693】jzptab [莫比乌斯反演]
jzptab Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 求 Input 第一行一个 ...
随机推荐
- BZOJ 1412: [ZJOI2009]狼和羊的故事【网络流】
Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! O ...
- Mysql的常见几种错误:1045,1044
Mysql的常见几种错误: 一.在进入 mysql 数据库时出错 # mysql -u root -p Enter password: ERROR 1045 (28000): Access den ...
- linux命令1——基础
Rm 删除命令 Rm [选项][文件] 删除一个文件或者目录 选项:r 递归的删除文件夹及其子文件,f 忽略不存在的文件(不提示) (2)rm删除目录下所有文件,但不删除目录 >>rm - ...
- loj6165 一道水题(线性筛)
题目: https://loj.ac/problem/6165 分析: 最直接的想法就是把1~n的所有数分解质因数,然后每个素数的幂取max 我们首先来看看一共可能有哪些素数? 实际上这些素因数恰好就 ...
- 从 modCount 看 java集合 fail-fast 机制
一.背景 在常见的Java的非线程安全集合类中(如HashMap.ArrayList),经常可以在一些修改结构的操作(如Add)中看到实例变量 modCount++ ,来统计集合的修改次数. 从注释也 ...
- Java处理XSS漏洞的工具类代码
原文:http://www.open-open.com/code/view/1455809388308 public class AntiXSS { /** * 滤除content中的危险 HTML ...
- SpringBoot初始教程之项目结构(一)
SpringBoot初始教程之项目结构 1 简介 spring Boot makes it easy to create stand-alone, production-grade Spring ba ...
- HTML的DIV如何实现垂直居中
外部的DIV必须有如下代码 display:table-cell; vertical-align:middle; 这样可以保证里面的东西,无论是DIV还是文本都可以垂直居中
- Office WORD如何取消开始工作右侧栏
工具-选项-视图,取消勾选"启动任务窗格"
- 《The Swift Programming Language》的笔记-第28页
页 本页里的主要内容是: 1 介绍swift语言里的各类数制,或者说某一整数的不同表示形式. 1)十进制,无前缀 的序列 3)八进制,以0o开头.后边是若干0~7的序列 进制,以0x开头.后是0~9. ...