【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\),求\(\sum\limits_{a_i=1}\sum\limits_{b_j=1}f(\gcd(i,j))\)。
Input
第一行一个数\(T\),表示询问数。
接下来\(T\)行,每行两个数\(a,b\),表示一个询问。
Output
对于每一个询问,输出一行一个非负整数作为回答。
HINT
\(T≤10000\)
\(1≤a,b≤10^7\)
推式子可以得到
\[\sum_{T=1}^{\min(a,b)}\lfloor\frac{a}{T}\rfloor\lfloor\frac{b}{T}\rfloor\sum_{d|T}f(d)\mu(\frac{T}{d})\]
设\(g(T)=\sum_{d|T}f(d)\mu(\frac{T}{d})\),想一下卷积发现没啥用,然后我就放弃了。
浪费了一次打表的大好机会...打表可以发现\(g\)只有\(01\)两种值,但是没什么显然的性质,于是我们可以暴力按意义分类讨论取\(0\)或者\(1\)
然后我们讨论一下,设\(p\)代表质数
\(g(p)=1\)
然后在计算式中令\(\frac{T}{d}\)的幂全为\(0\)或\(1\),这样\(\mu\)才能产生贡献。
这样的话可以发现\(f(d)\)只有两种取值\(f(T)\)与\(f(T-1)\),暴力讨论这两种取值。
可以得到式子\(g(T)=-\sum_{d|x\&\&f(d)\not=f(x)}\mu(\frac{x}{d})\)
然后继续讨论可能取的\(01\)情况,发现如果幂全相等,可以取\((-1)^{k+1}\),\(k\)为约数个数
否则就取\(0\)
线筛的时候维护一下最小质因子的幂数和最小质因子的幂
Code:
#include <cstdio>
#include <algorithm>
#define ll long long
const int N=1e7;
using std::min;
int pri[N+10],ispri[N+10],a[N+10],b[N+10],cnt;
ll f[N+10],ans,n,m;
void init()
{for(int i=2;i<=N;i++){if(!ispri[i]){b[i]=pri[++cnt]=i;f[i]=a[i]=1;}for(int j=1;j<=cnt&&i*pri[j]<=N;j++){ispri[i*pri[j]]=1;if(i%pri[j]==0){a[i*pri[j]]=a[i]+1;b[i*pri[j]]=b[i]*pri[j];if(i==b[i]) f[i*pri[j]]=1;else f[i*pri[j]]=a[i/b[i]]==a[i]+1?-f[i/b[i]]:0;break;}else{a[i*pri[j]]=1,b[i*pri[j]]=pri[j];f[i*pri[j]]=a[i]==1?-f[i]:0;}}}for(int i=1;i<=N;i++) f[i]+=f[i-1];
}
int main()
{init();int T;scanf("%d",&T);while(T--){ans=0;scanf("%lld%lld",&n,&m);for(ll l=1,r;l<=min(n,m);l=r+1){r=min(n/(n/l),(m/(m/l)));ans+=(n/l)*(m/l)*(f[r]-f[l-1]);}printf("%lld\n",ans);}return 0;
}
2018.12.15
转载于:https://www.cnblogs.com/butterflydew/p/10124717.html
【BZOJ3309】DZY Loves Math 解题报告相关推荐
- BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)
一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...
- 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 ...
- DZY Loves Math系列
link 好久没写数学题了,再这样下去吃枣药丸啊. 找一套应该还比较有意思的数学题来做. [bzoj3309]DZY Loves Math 简单推一下. \[\sum_{i=1}^n\sum_{j=1 ...
- 【BZOJ3309】DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MB Submit: 411 Solved: 161 [Submit][Status ...
- BZOJ 3309 DZY Loves Math
3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...
- 【BZOJ3512】DZY Loves Math IV(杜教筛)
[BZOJ3512]DZY Loves Math IV(杜教筛) https://www.cnblogs.com/cjyyb/p/10165338.html
- bzoj 3739 DZY loves math VIII
3739: DZY loves math VIII Time Limit: 25 Sec Memory Limit: 512 MB Submit: 318 Solved: 50 [Submit][St ...
- BZOJ3560 DZY Loves Math V
原题链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3560 DZY Loves Math V Description 给定n个正整数a1,a2 ...
- DZY Loves Math 系列详细题解
BZOJ 3309: DZY Loves Math I 题意 \(f(n)\) 为 \(n\) 幂指数的最大值. \[ \sum_{i = 1}^{a} \sum_{j = 1}^{b} f(\gcd ...
最新文章
- 浦发银行(600000.sh):与中国移动珠联璧合联姻
- C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧
- Debugging WebLogic Server Applications Using Eclipse and the WebLogic-Plugin
- 仿微信未读RecyclerView平滑滚动定位效果
- 这个回答让我错失offer!offer拿到手软
- Git 添加和提交组合命令
- 努比亚手机浏览器 安全证书失效_浏览器提示“该站点安全证书的吊销信息不可用”的解决方法-...
- stringbuffer判断是否为空
- python中的zip是什么意思_Python的zip()函数是什么
- 碳酸铈行业调研报告 - 市场现状分析与发展前景预测
- 【渝粤教育】国家开放大学2019年春季 1317社会工作行政(本) 参考试题
- std::begin、std::end、std::next 用法
- 代价敏感学习初探 - 有偏损失函数设计
- 前沿研究丨李德毅院士:基于驾驶脑的智能驾驶车辆硬件平台架构
- 人月神话中的神话(一)
- 联通数据能力开放平台介绍
- 什么是消息队列(MQ)
- 大厂常考机器学习面试题
- 618来了还愁没钱买东西?五分钟教你如何白嫖!
- 从 CV 到 NLP,深度学习领域的数据增强有哪些?