BZOJ3994: [SDOI2015]约数个数和(莫比乌斯反演)
Description

Input
输入文件包含多组测试数据。
Output
T行,每行一个整数,表示你所求的答案。
Sample Input
7 4
5 6
Sample Output
121
解题思路:
有一个喜闻乐见的结论:
${\sum_{i=1}^{n}}{\sum_{j=1}^{m}}{d(i*j)]}={\sum_{i=1}^{n}}{\sum_{j=1}^{m}}[gcd(i,j)==1]{\left \lfloor \frac{N}{i} \right \rfloor}{\left \lfloor \frac{M}{j} \right \rfloor}$
剩下的大家都会了吧QAQ
代码:
#include<map>
#include<cstdio>
#include<cstring>
#include<algorithm>
const int N=;
struct lnt{
std::map<unsigned int,long long>Arr;
long long arr[N];
bool has[N];
void Insert(unsigned int x,long long y)
{
if(x<N)
arr[x]=y,has[x]=true;
else
Arr[x]=y;
}
bool find(unsigned int x)
{
if(x<N)
return has[x];
else
return Arr.find(x)!=Arr.end();
}
long long val(unsigned int pos)
{
if(pos<N)
return arr[pos];
return Arr[pos];
}
};
unsigned int prime[N];
int phi[N];
int miu[N];
bool vis[N];
unsigned int cnt;
lnt Sum_phi;
lnt Sum_miu;
void gtp(void)
{
miu[]=phi[]=;
Sum_phi.Insert(,);
Sum_miu.Insert(,);
for(int i=;i<N;i++)
{
if(!vis[i])
{
prime[++cnt]=i;
miu[i]=-;
phi[i]=i-;
}
for(int j=;j<=cnt&&i*prime[j]<N;j++)
{
vis[i*prime[j]]=true;
if(i%prime[j]==)
{
miu[i*prime[j]]=;
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
miu[i*prime[j]]=-miu[i];
phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
for(int i=;i<N;i++)
{
Sum_phi.Insert(i,Sum_phi.val(i-)+phi[i]);
Sum_miu.Insert(i,Sum_miu.val(i-)+miu[i]);
}
return ;
}
long long PHI_search(unsigned int pos)
{
if(Sum_phi.find(pos))
return Sum_phi.val(pos);
long long tmp=;
for(unsigned int i=,j;i<=pos;i=j+)
{
j=pos/(pos/i);
tmp+=PHI_search(pos/i)*(long long)(j-i+);
}
Sum_phi.Insert(pos,1ll*pos*(pos+)/-tmp);
return 1ll*pos*(pos+)/-tmp;
}
long long MIU_search(unsigned int pos)
{
if(Sum_miu.find(pos))
return Sum_miu.val(pos);
long long tmp=;
for(unsigned int i=,j;i<=pos;i=j+)
{
j=pos/(pos/i);
tmp+=(j-i+)*MIU_search(pos/i);
}
Sum_miu.Insert(pos,-tmp);
return -tmp;
}
int main()
{
gtp();
int T;
scanf("%d",&T);
while(T--)
{
int x;
scanf("%d",&x);
printf("%lld %lld\n",PHI_search(x),MIU_search(x));
}
return ;
}
BZOJ3994: [SDOI2015]约数个数和(莫比乌斯反演)的更多相关文章
- P3327 [SDOI2015]约数个数和 莫比乌斯反演
P3327 [SDOI2015]约数个数和 莫比乌斯反演 链接 luogu 思路 第一个式子我也不会,luogu有个证明,自己感悟吧. \[d(ij)=\sum\limits_{x|i}\sum\li ...
- 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
[BZOJ3994][SDOI2015]约数个数和 Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组 ...
- [BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)
[BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N.M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问 ...
- [SDOI2015]约数个数和 莫比乌斯反演
---题面--- 题解: 为什么SDOI这么喜欢莫比乌斯反演,,, 首先有一个结论$$d(ij) = \sum_{x|i}\sum_{y|j}[gcd(x, y) == 1]$$为什么呢?首先,可以看 ...
- luogu P3327 [SDOI2015]约数个数和 莫比乌斯反演
题面 我的做法基于以下两个公式: \[[n=1]=\sum_{d|n}\mu(d)\] \[\sigma_0(i*j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]\] 其中\(\ ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- BZOJ 3994: [SDOI2015]约数个数和3994: [SDOI2015]约数个数和 莫比乌斯反演
https://www.lydsy.com/JudgeOnline/problem.php?id=3994 https://blog.csdn.net/qq_36808030/article/deta ...
- bzoj3994: [SDOI2015]约数个数和(反演+结论?!)
这题做的历程堪称惊心动魄 刚刚学了莫比乌斯反演的我高高兴兴的和cbx一起反演式子 期间有突破,有停滞,有否定 然后苟蒻的我背着cbx偷偷打开了题解 看到了 我...... 去你的有个性质啊(当然还是自 ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
题目描述 设d(x)为x的约数个数,给定N.M,求 \sum^N_{i=1}\sum^M_{j=1}d(ij)∑i=1N∑j=1Md(ij) 输入输出格式 输入格式: 输入文件包含多组测试数据.第 ...
随机推荐
- node使用express命令报错找不到ejs的解决方法
首先确定已经全局安装过好几遍express和express-generator,但一使用express命令直接报找不到ejs模块,全局和本地安装ejs都没用,nodemon模块报同样错误,找不到deb ...
- 用VUE做网站后台
介绍: 这是一个用vuejs2.0和element搭建的后台管理界面. 相关技术: vuejs2.0:渐进式JavaScript框架,易用.灵活.高效,似乎任何规模的应用都适用. element:基于 ...
- PKU 3281 Dining 网络流 (抄模板)
题意: 农夫约翰为他的牛准备了F种食物和D种饮料.每头牛都有各自喜欢的食物和饮料,而每种食物或饮料只能分配给一头牛.最多能有多少头牛可以同时得到各自喜欢的食物和饮料? 思路: 用 s -> 食物 ...
- 【转】 java RSA加密解密实现
[转] java RSA加密解密实现 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detai ...
- HDU 4462 Scaring the Birds (暴力枚举DFS)
题目链接:pid=4462">传送门 题意:一个n*n的区域,有m个位置是能够放稻草人的.其余都是玉米.对于每一个位置(x,y)所放稻草人都有个作用范围ri, 即abs(x-i)+ab ...
- Linux Unix shell 编程指南学习笔记(第五部分)
第二十五章 深入讨论 << 当shell 看到 << 的时候,它知道下一个词是一个分界符.该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行).比方: ...
- android YUV Sensor配置Camera应用的flash auto菜单
请在Config.ftbl.flashlight.h (mediatek\custom\common\hal\flashlight\src)中. 将全部的两处凝视掉的code: //CameraPar ...
- JNI 实战全面解析
项目决定移植一款C++开源项目到Android平台,开始对JNI深入研究. JNI是什么? JNI(JavaNative Interface)意为Java本地调用,它允许Java代码和其他语言写的代码 ...
- BZOJ 3544 treap (set)
我只是想找个treap的练习题-- 每回找到lower_bound 就好啦 //By SiriusRen #include <cstdio> #include <cstring> ...
- The method getDispatcherType() is undefined for the type HttpServletRequest错误解决方法
使用Eclipse Luna版本,jdk1.7和tomcat8.0开发JAVA EE应用.写一个简单的JSP部署后访问报JSP编译错误,具体错误信息如下: The method getDispatch ...