bzoj 3309 DZY Loves Math——反演+线性筛
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309
像这种数据范围,一般是线性预处理,每个询问 sqrt (数论分块)做。
先反演一番。然后 f( ) 还不能一个就花 log 的时间,所以要分析性质。
设 n 一共 m 个质因数,其中最大的指数是 t 。
已有 Σ(d|n) f(d)*u(n/d) ,如果 u( ) 的部分含有指数>=2的质因子,就无贡献;所以 u( ) 里每种质因数选1个或0个,一共 2^m 种。
如果 n 里有一个质因子的指数<t ,则卷积的值是0。因为 u 含有的所有集合可以分成含该因子、不含该因子两部分。这两部分含有的集合个数相同,u的符号正好相反,值相同(因为该质因子的有无不影响 f( ) 的值,因为 f( ) 的值是 t 或 t-1),所以求和为0。
所以 n 的质因子必须齐次。那么只有 u( ) 含有所有质因子的时候,f( ) 的值才是 t-1 ,否则都是 t 。除了这两项,其余消成0;再考虑 u( ) 的符号,于是 Σ(d|n) f(d)*u(n/d) = (-1)^(m+1)。
设 g(n) = Σ(d|n) f(d)*u(n/d) ,则 g( ) 可以线性筛。只要记录每个数是否齐次、如果齐次的话次数是几、一共多少种质因子,就能筛了。然后每个询问数论分块即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e7+;
int T,n,m,g[N],pri[N],cnt,c[N],v[N];
ll ans;
bool fx[N],vis[N];
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return fx?ret:-ret;
}
void calc(int a,int b,int &x,int &y)
{
x=; y=;
while(a%b==)y++,a/=b;
x=a;
}
void init()
{
int lm=1e7;
for(int i=;i<=lm;i++)
{
if(!vis[i])pri[++cnt]=i,g[i]=g[i-]+,fx[i]=c[i]=v[i]=;
else g[i]=g[i-]+(fx[i]?(v[i]&?:-):); for(int j=,k;j<=cnt&&((ll)i*pri[j]<=lm);j++)
{
vis[k=i*pri[j]]=;
if(i%pri[j]==)
{
int d,a;calc(i,pri[j],d,a);
if(d==)
fx[k]=,c[k]=a+,v[k]=;
else if(fx[d]&&c[d]==a+)
fx[k]=,c[k]=c[d],v[k]=v[d]+;
break;
}
else if(fx[i]&&c[i]==)
fx[k]=,c[k]=,v[k]=v[i]+;
}
}
}
int main()
{
init();
T=rdn();
while(T--)
{
n=rdn(); m=rdn(); int nt1,nt2;
if(n>m) swap(n,m);
for(int i=;i<=n;i=min(nt1,nt2)+)
{
nt1=(n/i); nt2=(m/i);
ll d=(ll)nt1*nt2*(g[min(nt1=n/nt1,nt2=m/nt2)]-g[i-]);
ans+=d;
}
printf("%lld\n",ans); ans=;
}
return ;
}
bzoj 3309 DZY Loves Math——反演+线性筛的更多相关文章
- bzoj 3560 DZY Loves Math V - 线性筛 - 扩展欧几里得算法
给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). Input 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. Output 仅一行答案. Sampl ...
- ●BZOJ 3309 DZY Loves Math
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...
- BZOJ 3309: DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 761 Solved: 401[Submit][Status ...
- bzoj 3309 DZY Loves Math 莫比乌斯反演
DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1303 Solved: 819[Submit][Status][Dis ...
- BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]
题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d| ...
- 【BZOJ3309】DZY Loves Math(线性筛)
题目: BZOJ 3309 分析: 首先,经过一番非常套路的莫比乌斯反演(实在懒得写了),我们得到: \[\sum_{T=1}^n \sum_{d|T}f(d)\mu(\frac{T}{d})\lfl ...
- bzoj 3309 DZY Loves Math —— 莫比乌斯反演+数论分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 凭着上课所讲和与 Narh 讨论推出式子来: 竟然是第一次写数论分块!所以迷惑了半天: ...
- BZOJ 3309 DZY Loves Math ——莫比乌斯反演
枚举$d=gcd(i,j)$ 然后大力反演 ——来自Popoqqq的博客. 然后大力讨论后面的函数的意义即可. http://blog.csdn.net/popoqqq/article/details ...
- BZOJ 3309: DZY Loves Math 莫比乌斯反演+打表
有一个神奇的技巧——打表 code: #include <bits/stdc++.h> #define N 10000007 #define ll long long #define se ...
随机推荐
- cocos2d-x调用android内嵌浏览器打开网页
cocos2d-x调用android内嵌浏览器打开网页,能够从入口传入网址,C++调用android 的api就可以实现. 方法也非常easy 1. 改动"cocos2dx\platform ...
- 菜鸟调错(十)——启动Tomcat报错“Unsupported major.minor version xxx ”
近期项目更新JDK,由之前的1.7更新到1.8. 下载并安装好新的JDK以后,编译.启动Tomcat的时候,报错了.提示:"Unsupported major.minor version x ...
- opencv中的SVM图像分类(二)
opencv中的SVM图像分类(二) 标签: svm图像 2015-07-30 08:45 8296人阅读 评论(35) 收藏 举报 分类: [opencv应用](5) 版权声明:本文为博主原创文 ...
- 2016年最值得新手程序猿阅读的书:《增长project师指南》
这本书的来源于根据我在<Repractise简单介绍篇:Web开发的七天里>中所说的 Web 开发的七个步骤而展开的电子书.当然它也是一个 APP.它一本关于怎样成为增长project师的 ...
- php 获取当前页面url路径
#测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST'].""; # ...
- 在html文件引入其它html文件的几种方法
1.IFrame引入,看看下面的代码 <IFRAME NAME="content_frame" width=100% height=600 marginwidth=0 mar ...
- 使用sed来自动注释/恢复crontab中的一个任务
# 注释crontab任务crontab -l > ${WORK_DIR}/cron_binarysed -i 's%\(.*/home/xyz/xyz.sh\)%#\1%' ${WORK ...
- xpath 节点1
XPath 含有超过 100 个内建的函数.这些函数用于字符串值.数值.日期和时间比较.节点和 QName 处理.序列处理.逻辑值等等. 节点(Node) 在 XPath 中,有七种类型的节点:元素. ...
- c#生成试卷。。。
.net下,操作Word的插件有NPOI,Spire,一版大家经常用的是NPOI,我在着手开发的时候,优先考虑的也是NPOI,然而时间比较着急,没有找到NPOI支持2003版本, 就放弃了,从网上发行 ...
- 分布式流媒体直播服务器系统 For Linux
在之前的一篇<基于Darwin实现的分布式流媒体直播服务器系统>中,我们配置了在Win32下面的流媒体直播系统,今天我们分享一下在Linux下面EasyDSS分布式直播服务器系统的配置. ...