线性筛+莫比乌斯反演

盗波图 来自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的更多相关文章

  1. 【BZOJ2693】jzptab(莫比乌斯反演)

    [BZOJ2693]jzptab(莫比乌斯反演) 题面 讨厌权限题,只能跑到别的OJ上交 和这题是一样的 多组数据 求\[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 题解 前 ...

  2. 题解-bzoj2154Crash的数字表格 & bzoj2693 jzptab

    Problem bzoj2818-单组询问-无权限 bzoj2693-多组询问-需权限 洛谷1829-单组询问-无权限 \(T\)组询问(如果有),给定 \(n,m\),求 \[\sum_{i=1}^ ...

  3. BZOJ2154/BZOJ2693/Luogu1829 Crash的数字表格/JZPFAR 莫比乌斯反演

    传送门--Luogu 传送门--BZOJ2154 BZOJ2693是权限题 其中JZPFAR是多组询问,Crash的数字表格是单组询问 先推式子(默认\(N \leq M\),所有分数下取整) \(\ ...

  4. 【BZOJ2693】jzptab & 【BZOJ2154】Crash的数字表格

    题目 弱化版题目的传送门([BZOJ2154]Crash的数字表格) 加强版题目的传送门([BZOJ2693]jzptab) 思路&解法 题目是要求: \(\sum\limits_{i = 1 ...

  5. BZOJ2154: Crash的数字表格 & BZOJ2693: jzptab

    [传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...

  6. BZOJ2693: jzptab

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:同2154 多组数据 题解:按2154再往后转化一下就可以把n,m放到一边儿,然后 ...

  7. 【BZOJ2693】jzptab

    Time Limit: 5000 ms Memory Limit: 512 MB description 给你\(n, m\),求\(\sum\limits_{i=1}^{n}\sum\limits_ ...

  8. 【bzoj2693】jzptab 莫比乌斯反演+线性筛

    题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...

  9. BZOJ2693:JZPTAP——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2693 Description   Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 ...

  10. 【BZOJ2693】jzptab [莫比乌斯反演]

    jzptab Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description   求 Input 第一行一个 ...

随机推荐

  1. Delphi接口使用实例介绍

    对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两 ...

  2. T1503 愚蠢的宠物 codevs

    http://codevs.cn/problem/1503/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 大家都知道,sh ...

  3. xml建模

    1.建模的由来 就是将指定的xml字符串当作对象来操作 如果说当对一个指定的xml格式字符串完成了建模操作, 好处在于,只需要调用指定的方法就可以完成预定的字符串获取: 2.建模的思路 1.分析需要被 ...

  4. 实时更新数据的jQuery图表插件DEMO演示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. centOS 安装mysql5.6

    删除原先的mysql5.1#数据库服务器的安装 , 请自行在mysql官方找最新的rpm rpm -Uvh http://dev.mysql.com/get/mysql-community-relea ...

  6. SQL Server 2008 R2 安装时提示“Reporting Services目录数据库文件存在”

    打开MSSQL数据库管理系统的安装目录,例如: X:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. 其中 X:\ ...

  7. 在SUSE12中使用 Machinery 进行高级系统管理

    简单介绍 在 SUSE Linux Enterprise 12 中.SUSE 如今推出了面向系统管理员的 Machinery.作为其高级系统管理模块的一部分.Machinery 是适用于 Linux ...

  8. Node.js - 断言

    什么是断言? 程序中的断言是什么意思,让我们带着疑问一步步探索 断言即我们相信程序某个特定点布尔表达式为真 举个例子就是: 我相信你是对的,然后让别人判断一下你是对的或错的,最后我得到结果. 好了,进 ...

  9. js中splice()的强大(删除,插入或替换数组的元素)

    1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 2.插入-向数组指定位置插入任意项元素.三个参数,第一个参数(其实位置),第二个参数(0),第三个参数( ...

  10. java SE基础(Collection接口概述)

    Collection接口相关集成关系例如以下图 1. 关于可迭代接口(Iterable)             可迭代接口仅包括一个方法,返回一个在一组T类型元素上进行迭代的迭代器: public ...