BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)
一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了。
考虑怎么求g(n)。当然是打表啊。设n=∏piai,n/d=∏pibi 。显然若存在bi>1则这个d没有贡献。考虑bi为0和1两种情况。如果只看ai最小的质因子的选取情况,会发现大部分情况下其是0还是1,对f的取值是没有影响的,但会使μ取反,于是就抵消为0。而特殊情况即为所有ai均相同,此时若所有bi都取1会使f减少。与一般情况比较可以得到此时g(n)=(-1)质因子个数+1。
然后就可以线性筛了。记录一下n去掉最小质因子后的数及最小质因子的幂次就可以了。
#include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() {int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f; } #define N 10000010 int T,prime[N],f[N],p[N],c[N],v[N],cnt=0; bool flag[N]; int main() { #ifndef ONLINE_JUDGEfreopen("bzoj3309.in","r",stdin);freopen("bzoj3309.out","w",stdout);const char LL[]="%I64d\n"; #elseconst char LL[]="%lld\n"; #endifT=read();flag[1]=1;p[1]=1;c[1]=0;f[1]=0;for (int i=2;i<=N-10;i++){if (!flag[i]) prime[++cnt]=i,p[i]=1,c[i]=1,f[i]=1;for (int j=1;j<=cnt&&prime[j]*i<=N-10;j++){int t=prime[j]*i;flag[t]=1;if (i%prime[j]==0){p[t]=p[i];c[t]=c[i]+1;if (c[p[i]]==0) f[t]=1;else f[t]=(c[t]==c[p[i]]?-f[p[i]]:0);break;}p[t]=i;c[t]=1;if (c[i]==0) f[t]=1;else f[t]=(c[i]==1?-f[i]:0);}}for (int i=1;i<=N-10;i++) f[i]+=f[i-1];while (T--){int n=read(),m=read();long long ans=0;for (int i=1;i<=min(n,m);i++){int t=min(n/(n/i),m/(m/i));ans+=1ll*(f[t]-f[i-1])*(n/i)*(m/i);i=t;}printf(LL,ans);}return 0; }
转载于:https://www.cnblogs.com/Gloid/p/9683589.html
BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)相关推荐
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
- 【bzoj2694】Lcm 莫比乌斯反演+线性筛
题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...
- 【bzoj2693】jzptab 莫比乌斯反演+线性筛
题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...
- Bzoj3309-DZY Loves Math【莫比乌斯反演,线性筛】
正题 bzoj没了,在darkbzoj交吧 题目链接:https://darkbzoj.tk/problem/3309 题目大意 定义f(x)f(x)f(x)表示xxx所有质因数中最大的指数幂. 求∑ ...
- bzoj4407 于神之怒加强版(莫比乌斯反演+线性筛)
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MB Submit: 355 Solved: 174 [Submit][Status][Dis ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- 南昌邀请赛网络赛 G. tsy's number(莫比乌斯反演+线性筛)
题目链接: tsy's number 题意: 求 (mod ) 思路: 原式 = 设 设 原式 = 设T = id ,将 i 的求和变为 T 的求和: 原式 = :这个是 与 的 ...
- bzoj3309: DZY Loves Math
这显然要用莫比乌斯反演: Ans=∑ai=1∑bj=1f(gcd(i,j))=∑df(d)∑⌊ad⌋i=1∑⌊bd⌋j=1[gcd(i,j)=1]=∑df(d)∑⌊ad⌋i=1∑⌊bd⌋j=1∑p|T ...
- 洛谷P2257 YY的GCD 莫比乌斯函数反演+线性筛
洛谷P2257 YY的GCD 标签 莫比乌斯反演 线性筛 前言 这题貌似和莫反没多大关系,就是用到了一个莫比乌斯函数的性质了,其他就是推公式,优化和式. 我的第一道懵逼反演-真的好难好难-而且套路特别 ...
最新文章
- go build 编译报错 missing go.sum entry for module providing package
- iOS7系统iLEX RAT冬青鼠安装教程:无需刷机还原纯净越狱系统
- 配置Struts 2应用程序的安全功能(转)
- 【Linux】一步一步学Linux——dpkg-preconfigure命令(275)
- 三种主流流媒体协议比较
- java conditionobject_Java AbstractQueuedSynchronizer源码阅读4-ConditionObject
- ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)...
- linux中不用命令安装flash,Linux下安装flash player的方法
- 生物信息常用网站(数据库)
- Git—— 1.安装
- netware显示没有首选服务器,NetWare下服务器配置几例
- Android环境搭建
- mysql客户端用什么 知乎_知乎面试记
- BDE-TDataBase
- java获取手机通讯录权限_android获取手机通讯录
- 基于T5CPU的智能屏产品型号与内核对照表
- 我见过的最糟糕代码,看了都说好!
- 笔记本外接显示器闪烁(水波纹)解决方案
- AWK文本分析工具-常用场景(持续更新中)
- 事无巨细,时钟芯片DS1302
热门文章
- 树莓派php中文乱码,[翻译完成] 树莓派U-Boot
- 全局配置_中兴天机配置公布:智汇屏+全局黑暗模式
- 安卓mysql类库_Android 链接mysql数据库
- mysql heartbeat keepalived_LVS+keepalived+DRBD+heartbeat+mysql
- OpenCV-Python实战(10)——详解 OpenCV 轮廓检测
- Python Parse JSON –转储,加载
- 开课吧Web:学习Web前端技术有哪些好处?
- JAVA中的枚举使用总结
- 【HDOJ】1261 字串数【组合数学--排列+代数】
- centos(7.0) 上 crontab 计划任务