bzoj2693--莫比乌斯反演+积性函数线性筛
推导:
设d=gcd(i,j)
利用莫比乌斯函数的性质
令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2)
令T=d*t
设f(T)=
T可以分块。又由于μ是积性函数,积性函数的约束和仍是积性函数,所以f也是积性函数,可以O(n)线性筛求得。总时间复杂度为
具体筛法看代码。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define mod 100000009
#define _min(a,b) a>b?b:a
#define ll long long
inline char nc(){
static char buf[],*p1=buf,*p2=buf;
if(p1==p2){
p2=(p1=buf)+fread(buf,,,stdin);
if(p1==p2)return EOF;
}
return *p1++;
}
inline void read(int& x){
char c=nc();
for(;c<''||c>'';c=nc());
for(x=;c>=''&&c<='';x=x*+c-,c=nc());
}
int len;
char s[];
inline void print(ll x){
if(!x){
putchar('');putchar('\n');
return;
}
for(len=;x;x/=)s[++len]=x%;
for(;len;len--)putchar(s[len]+);
putchar('\n');
}
inline int sum(ll x,ll y){
return (x*(x+)/%mod)*(y*(y+)/%mod)%mod;
}
int T,i,j,k,n,m,ma,num,p[],x,a[],b[],ans;
ll f[];
bool v[];
int main()
{
read(T);
for(i=;i<=T;i++){
read(a[i]);read(b[i]);
if(a[i]>b[i]){k=a[i];a[i]=b[i];b[i]=k;}
if(a[i]>ma)ma=a[i];
}
f[]=;
for(i=;i<=ma;i++){
if(!v[i]){
p[++num]=i;
f[i]=-(1LL*i*(i-)%mod);
}
for(j=;j<=num&&p[j]*i<=ma;j++){
v[p[j]*i]=;
if(i%p[j])f[i*p[j]]=f[i]*f[p[j]]%mod;else{
f[i*p[j]]=f[i]*p[j]%mod;
break;
}
}
}
for(i=;i<=ma;i++)f[i]=(f[i]+f[i-])%mod;
for(k=;k<=T;k++){
ans=;
for(i=;i<=a[k];i=j+){
j=_min(a[k]/(a[k]/i),b[k]/(b[k]/i));
ans=(ans+(f[j]-f[i-])*sum(a[k]/i,b[k]/i)%mod)%mod;
}
print((ans+mod)%mod);
}
return ;
}
bzoj2693
bzoj2693--莫比乌斯反演+积性函数线性筛的更多相关文章
- 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 ...
- 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和
只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...
- [模板] 积性函数 && 线性筛
积性函数 数论函数指的是定义在正整数集上的实或复函数. 积性函数指的是当 \((a,b)=1\) 时, 满足 \(f(a*b)=f(a)*f(b)\) 的数论函数. 完全积性函数指的是在任何情况下, ...
- BZOJ4804 欧拉心算(莫比乌斯反演+欧拉函数+线性筛)
一通套路后得Σφ(d)μ(D/d)⌊n/D⌋2.显然整除分块,问题在于怎么快速计算φ和μ的狄利克雷卷积.积性函数的卷积还是积性函数,那么线性筛即可.因为μ(pc)=0 (c>=2),所以f(pc ...
- BZOJ 2693: jzptab 莫比乌斯反演 + 积性函数 +筛法
Code: #include<bits/stdc++.h> #define ll long long #define M 10001000 #define maxn 10200100 #d ...
- Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3241 Solved: 1437[Submit][Status][Discuss ...
- 莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记
最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线 ...
- P6222 「简单题」加强版 莫比乌斯反演 线性筛积性函数
LINK:简单题 以前写过弱化版的 不过那个实现过于垃圾 少预处理了一个东西. 这里写一个实现比较精细了. 最后可推出式子:\(\sum_{T=1}^nsum(\frac{n}{T})\sum_{x| ...
- bzoj 2693: jzptab 线性筛积性函数
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 444 Solved: 174[Submit][Status][Discus ...
随机推荐
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- welcome to my cnblog
博客园总算开通了,以后就分享自己的东西,和大家交流.
- Photoshop、Illustrator思维导图笔记
半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.
- D3.js学习(六)
上节我们学习了如何绘制多条曲线, 以及给不同的曲线指定不同的坐标系.在这节当中,我们会对坐标轴标签相关的处理进行学习.首先,我们来想一个问题, 如何我们的x轴上的各个标签的距离比较近,但是标签名又比较 ...
- Storm构建分布式实时处理应用初探
最近利用闲暇时间,又重新研读了一下Storm.认真对比了一下Hadoop,前者更擅长的是,实时流式数据处理,后者更擅长的是基于HDFS,通过MapReduce方式的离线数据分析计算.对于Hadoop, ...
- Leetcode 笔记 110 - Balanced Binary Tree
题目链接:Balanced Binary Tree | LeetCode OJ Given a binary tree, determine if it is height-balanced. For ...
- ASP.NET MVC Model元数据(一)
ASP.NET MVC Model元数据(一) 前言 在我初学的时候对Model元数据的概念很模糊,或者说是在大脑中没有它的一个模型,作为小白的我去看网上的一些文章还是两眼一黑啥都看不明白,然后我想退 ...
- [Solr] (源) Solr与MongoDB集成,实时增量索引
一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml.js ...
- WinForm中显示PDF文件
一.VS2013中,菜单-工具-选择工具箱项-COM组件-勾选“Adobe PDF Reader”-确定 二.在工具箱中就可以看到Adobe PDF Reader控件了,拖到窗体上. 拖到窗体上之后, ...
- Atitit onvif协议获取rtsp地址播放java语言 attilx总结
Atitit onvif协议获取rtsp地址播放java语言 attilx总结 1.1. 获取rtsp地址的算法与流程1 1.2. Onvif摄像头的发现,ws的发现机制,使用xcf类库1 2. 调用 ...