2693: jzptab

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 444  Solved: 174
[Submit][Status][Discuss]

Description

 

Input

一个正整数T表示数据组数

接下来T行 每行两个正整数 表示N、M

Output

T行 每行一个整数 表示第i组数据的结果

Sample Input

1

4 5

Sample Output

122

HINT
T <= 10000

N, M<=10000000

  重新学习了一下积性函数方式推导莫比乌斯反演系列题目,感觉求sigma(gcd(x,y))、sigma(gcd(x,y)==1)用积性函数的性质推导应该还算是简单,但是求sigma(lcm(x,y))用积性函数就非常恶心了,具体推法详见jzp讲稿:

 传送门:http://wenku.baidu.com/link?url=_glgC9AsqkzOGXSe66vrbLWwf9mr_HZujxaAszME0pCbVtRdcTyhqODy801-tgQdoArjJYYwQGwpQ7E4mdA61OsRYO3qciEfusRQ51JPUCy

  这道题是bzoj 2154《 Crash的数字表格》的多组询问版,如果我没记错的话,那道题我用的是O(n)求sigma(lcm(x,y)),但是jzp讲的神奇的方法可以O(n)预处理,O(sqrt(n))询问。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define MAXP 10010000
#define MAXN 10010000
#define MOD 100000009
typedef long long qword;
bool pflag[MAXP];
int prime[MAXP],topp=-;
int phi[MAXP];
int gg[MAXP];
qword gs[MAXP];
int mu[MAXP];
void init()
{
phi[]=;
gg[]=;
mu[]=;
for (int i=;i<MAXP;i++)
{
if (!pflag[i])
{
prime[++topp]=i;
phi[i]=i-;
gg[i]=-i;
mu[i]=-;
}
for (int j=;j<=topp && i*prime[j]<MAXP;j++)
{
pflag[i*prime[j]]=true;
if (i%prime[j]==)
{
phi[i*prime[j]]=phi[i]*prime[j];
gg[i*prime[j]]=gg[i];
mu[i*prime[j]]=;
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-);
gg[i*prime[j]]=gg[i]*(-prime[j]);
mu[i*prime[j]]=-mu[i];
}
}
for (int i=;i<MAXP;i++)
gs[i]=(gs[i-]+(qword)gg[i]*i)%MOD;
return ;
}
qword solve(int n,int m)
{
qword res=;
int l=;
for (int i=;i<=min(n,m);i=l)
{
l=min(n/(n/i),m/(m/i))+;
res=(res+((qword)(n/i)*(n/i+)/%MOD)%MOD*((qword)(m/i)*(m/i+)/%MOD)%MOD*(gs[l-]-gs[i-])%MOD)%MOD;
}
res=(res+MOD)%MOD;
return res;
} int main()
{
freopen("input.txt","r",stdin);
int n,m;
int nn;
init();
scanf("%d",&nn);
while (nn--)
{
scanf("%d%d",&n,&m);
printf("%lld\n",solve(n,m));
}
}

bzoj 2693: jzptab 线性筛积性函数的更多相关文章

  1. BZOJ 2693: jzptab 莫比乌斯反演 + 积性函数 +筛法

    Code: #include<bits/stdc++.h> #define ll long long #define M 10001000 #define maxn 10200100 #d ...

  2. Divisor counting [线性筛积性函数]

    Divisor counting 题目大意:定义f(n)表示整数n的约数个数.给出正整数n,求f(1)+f(2)+...+f(n)的值. 注释:1<=n<=1000,000 想法:我们再次 ...

  3. 莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记

    最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线 ...

  4. 牛客小白月赛12C (线性筛积性函数)

    链接:https://ac.nowcoder.com/acm/contest/392/C来源:牛客网 题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: ...

  5. P6222 「简单题」加强版 莫比乌斯反演 线性筛积性函数

    LINK:简单题 以前写过弱化版的 不过那个实现过于垃圾 少预处理了一个东西. 这里写一个实现比较精细了. 最后可推出式子:\(\sum_{T=1}^nsum(\frac{n}{T})\sum_{x| ...

  6. 线性筛积性函数+反演T套路——bzoj4407

    #include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 #defi ...

  7. bzoj 4407 于神之怒加强版 —— 反演+筛积性函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 推导如这里:https://www.cnblogs.com/clrs97/p/5191 ...

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

  9. BZOJ 2190 仪仗队(线性筛欧拉函数)

    简化题意可知,实际上题目求得是gcd(i,j)=1(i,j<=n)的数对数目. 线性筛出n大小的欧拉表,求和*2+1即可.需要特判1. # include <cstdio> # in ...

随机推荐

  1. Android(java)学习笔记151: SurfaceView使用

    1.SurfaceView简介       在一般的情况下,应用程序的View都是在相同的GUI线程(UI主线程)中绘制的.这个主应用程序线程同时也用来处理所有的用户交互(例如,按钮单击或者文本输入) ...

  2. mysq优化参数详解:innodb_buffer_pool_size,innodb_file_per_table

    Mysql配置参数: thread_pool:如果支持的话,使用线程池 innodb_buffer_pool_size:物理内存50%-70%最高80%独立实例,多实例:60% innodb_flus ...

  3. AutoInvoice in Oracle Apps R12

    AutoInvoice in Oracle Apps R12 AutoInvoice is a powerful, flexible tool you can use to import and va ...

  4. redhat 6.4 双网卡绑定

    linux系统配置 1.redhat 6.4 双网卡绑定 1)#ethtool eth* //在服务器网口接网线至笔记本,确定各网口的配置文件: 2)切换目录 #cd /etc/sysconfig/n ...

  5. python+django+wusgi+nginx安装部署

    基于centos搭建nginx+uwsgi运行django环境 环境: CentOS 7 nginx/1.9.12 Python 2.7.5 一:安装依赖包5 yum install zlib-dev ...

  6. Java联网技术之一HTTP

    学到Java的联网技术,这里首先来看看关于URl, 要从网上获得内容, 需要实现下面的4步, 1.创建一个表示资源的网络地址的URL对象, 2.创建一个HttpURLConnection 连接对象 3 ...

  7. dapper的一个小扩展以支持dataset

    废话不多,直接上方法 public static DataSet ExecuteDataSet(this IDbConnection cnn, IDbDataAdapter adapter, stri ...

  8. Javascript 数组自定义排序,并获取排序后的保存原索引的同序数组(堆排序实现)

    比如数组A: [ 0: 5, 1: 2, 2: 4, 3: 3, 4: 1 ] 排序后的结果为:[1, 2, 3, 4, 5],但是有时候会有需求想要保留排序前的位置到一个同位数组里,如前例则为:[4 ...

  9. mysql 账户操作

    1.授权 mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 权限1,权限2,…权限n代表selec ...

  10. 【制作镜像Win*】环境准备(设置yum源)

    首先使用 yum repolist all 命令查看当前启用了哪些yum源. 镜像配置文件在/etc/yum.repos.d/目录下,ll会看到很多repo文件,每一个文件里面都配置了yum源: [b ...