3309: DZY Loves Math
Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 411 Solved: 161
[Submit][Status][Discuss]
Description

对于正整数n,定义f(n)为n所含质因子的最大幂指数。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。
给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b)。

Input

第一行一个数T,表示询问数。
接下来T行,每行两个数a,b,表示一个询问。

Output

对于每一个询问,输出一行一个非负整数作为回答。

Sample Input
4

10000

7558588 9653114

6514903 4451211

7425644 1189442

6335198 4957

Sample Output
35793453939901

14225956593420

4332838845846

15400094813
HINT

【数据规模】

T ≤ \le10000

1 ≤ \lea,b ≤ \le10 7 ^7

Source
为了方便代入反演,我们把原题里那个f函数在这里用g代替
令f(i)为 gcd(x,y)=i,1≤x≤a,1≤y≤b gcd(x,y)=i,1\le x\le a,1\le y\le b的数对数目。
然后有 f(i)=∑i|dμ(di)⌊nd⌋⌊md⌋ f(i)=\sum_{i|d}\mu(\frac d i)\lfloor \frac n d\rfloor\lfloor \frac m d\rfloor
对于每个询问,我们要求的答案就是

∑i=1min(m,n)g(i)f(i)=∑i=1min(m,n)g(i)∑i|dμ(di)⌊nd⌋⌊md⌋

\sum_{i=1}^{min(m,n)}g(i)f(i)=\sum_{i=1}^{min(m,n)}g(i)\sum_{i|d}\mu(\frac d i)\lfloor \frac n d\rfloor\lfloor \frac m d\rfloor

=∑d=1min(m,n)⌊nd⌋⌊md⌋∑i|dμ(di)g(i)

=\sum_{d=1}^{min(m,n)}\lfloor \frac n d\rfloor\lfloor \frac m d\rfloor\sum_{i|d}\mu(\frac d i)g(i)
当然就会想到对后面那个和式做前缀和,然后搭配枚举除法使用,把ProblemB里那个莫比乌斯函数的前缀和替换成这里这个和式的前缀和。
要怎么求?
当然我们要先排除掉那些 μ \mu为0的没有意义的项。
把d和i拆分成素数乘积的形式:

d=pa11∗pa22∗...∗pann

d=p_1^{a1}*p_2^{a2}*...*p_n^{an}

i=pA11∗pA22∗...∗pAnn

i=p_1^{A1}*p_2^{A2}*...*p_n^{An}

我们已经知道i是d的因子
那肯定就有对于i的每一个质因子 pi,Ai≤ai p_i,Ai\le ai
下面我们来代入线筛试试看怎么求后面的和式
在这里我进行了一些讨论
假设我们有两个数 i∗prime[j],i i*prime[j],i
①如果 imodprime[j]=0 i\mod prime[j]=0
这时候i和prime[j]就满足上面d和i的关系了。
这时候先来看一种极为特殊的情况: i=prime[j] i=prime[j],显然这个时候和式的值为1
再说另一种特殊情况:如果d中每个质因子 pi p_i的指数 ai ai都相等呢?这时候每个质因子都有可能对d的函数值 g(d) g(d)有贡献,而满足这种情况也只可能是 i=pa11∗pa22∗...∗pai−1i∗...∗pann i=p_1^{a1}*p_2^{a2}*...*p_i^{ai-1}*...*p_n^{an}时(ai-1≠0)。那么这时候 ans[d]=−ans[i] ans[d]=-ans[i]
为什么?
再加入这个新的p_i之后我们看一下那个和式的内容,增加了很多项对吧。这些项有一个共同点,数值的绝对值都一样,只是正负号不一样,而符号的决定就与质因子数目的奇偶有关了。这个稍微脑补一下就能发现是对的。。。(我怎么发现的?打表大法好!)
最后就是普遍情况了,完全是一堆没有规律的a摆在那里,满足里面必定存在ai≠aj,和式的值是多少?

又是打表得出,结果是0

又是打表得出,结果是0
什么你觉得我一直打表找规律是在扯淡?
那就证!
我们知道,所有a里有一部分是对 g(d) g(d)有贡献的,另一部分是没有贡献的。
同样数值的正负号与质因子个数有关。
我们把d拆分成i和 di \frac d i(不含平方因子,否则 μ \mu为0就没有意义了)两个因子,偶然发现让 di \frac d i有偶个质因子和奇个平方因子的方案数恰好是相同的,在这个条件下,每种方案总有数值为其相反数的方案与之对应。所以最后和式的值就成0了。
我怎么可能在做题时候自己证着玩呢233反正打表找到规律了先写出来代码A了再说,这些事都是做完题之后发生的。
第一种情况终于搞完了= =
② imodprime[j]≠0 i\mod prime[j]\neq 0
跟上面差不多了,不同的是如果i为互异素数组成, ans[i∗prime[j]]=−ans[i] ans[i*prime[j]]=-ans[i],否则为0.
终于全部讨论完了= =
不知道我扯淡了这么多看这篇题解的人看懂了没有(说不定早就看烦了QAQ)如果还是不懂的话,请您翻别人的题解吧浪费您这么多时间真是抱歉QAQ网上好的题解一大堆呢。。。
直接愉悦的贴代码吧。。。
(这是一份曾经在BZOJ CE了9次还是10次最后AC的代码QUQ)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
using namespace std;
#define MAXN 10000010
int num[MAXN];
bool not_prime[MAXN];
int prime[MAXN],top;
int mu[MAXN],Last[MAXN];
long long sum[MAXN];
long long ans;
int T;
int a,b;
void in(int &x)
{char ch=' ';x=0;while (!(ch>='0'&&ch<='9')) ch=getchar();while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
}
void check_prime()
{for (int i=2;i<=MAXN-10;i++){if (!not_prime[i])prime[++top]=i,mu[i]=-1,num[i]=1,sum[i]=1,Last[i]=i;for (int j=1;j<=top&&i*prime[j]<=MAXN-10;j++){not_prime[i*prime[j]]=1;if (i%prime[j]==0){mu[i*prime[j]]=0;num[i*prime[j]]=num[i]+1;Last[i*prime[j]]=Last[i]*prime[j];if (i/Last[i]==1) sum[i*prime[j]]=1;else if (num[i/Last[i]]==num[i*prime[j]]) sum[i*prime[j]]=-sum[i/Last[i]];else sum[i*prime[j]]=0;break;}mu[i*prime[j]]=-mu[i];num[i*prime[j]]=1;Last[i*prime[j]]=prime[j];if (num[i]==1) sum[i*prime[j]]=-sum[i];else sum[i*prime[j]]=0;}}
}
long long get_num(int a,int b)
{long long last=0;long long ret=0;for (long long i=1;i<=min(a,b);i=last+1){last=min(a/(a/i),b/(b/i));ret+=(long long)(a/i)*(b/i)*(sum[last]-sum[i-1]);}return ret;
}
int main()
{check_prime();num[0]=0;num[1]=0;num[2]=1;mu[0]=0;mu[1]=1;for (int i=1;i<=MAXN-10;i++) sum[i]+=sum[i-1];in(T);while (T--){in(a);in(b);printf("%I64d\n",get_num(a,b));}
}

【BZOJ3309】DZY Loves Math相关推荐

  1. 【BZOJ3309】DZY Loves Math 解题报告

    [BZOJ3309]DZY Loves Math Description 对于正整数\(n\),定义\(f(n)\)为\(n\)所含质因子的最大幂指数.例如\(f(1960)=f(2^3×5^1×7^ ...

  2. 【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, ...

  3. 【BZOJ3309】DZY Loves Math(线性筛)

    题目: BZOJ 3309 分析: 首先,经过一番非常套路的莫比乌斯反演(实在懒得写了),我们得到: \[\sum_{T=1}^n \sum_{d|T}f(d)\mu(\frac{T}{d})\lfl ...

  4. 【BZOJ3512】DZY Loves Math IV(杜教筛)

    [BZOJ3512]DZY Loves Math IV(杜教筛) https://www.cnblogs.com/cjyyb/p/10165338.html

  5. 【题解】DZY Loves Math

    sol: 卷积函数求通项 + 莫比乌斯函数 . 我们只需要求到 g(n)=∑d∣nf(d)μ(nd)g(n)=\sum_{d|n}f(d)\mu(\frac{n}{d})g(n)=∑d∣n​f(d)μ ...

  6. 【BZOJ3512】DZY Loves Math IV

    题目大意 给出 n , m n,m n,m,求 ∑ i = 1 n ∑ j = 1 m ϕ ( i j ) \sum\limits_{i=1}^n\sum\limits_{j=1}^m\phi(ij) ...

  7. 【BZOJ3512】 DZY Loves Math IV

    题意:(第n+1次)略 首先转换:Ans(n,m)=∑i=1n∑j=1mφ(i⋅j)设s(n,m)=∑i=1mφ(n⋅i)那么Ans(n,m)=∑i=1ns(i,m)每次从1到n枚举i,然后考虑:s( ...

  8. 【CF446B】 DZY Loves Modification

    题目 题目描述 As we know, DZY loves playing games. One day DZY decided to play with a n×m n×m matrix. To b ...

  9. 【bzoj 3309】 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, ...

最新文章

  1. crontab安装_django-crontab实现服务端的定时计划任务
  2. golang中的strings.SplitAfterN
  3. 巧用Excel 轻松转换人民币大小写
  4. mysql ptquerydigest_MySQL - pt-query-digest的下载与使用
  5. 原作者出局,Faker.js已被社区控制
  6. fastapi 传输文件存文件_揭秘|国内影视文件传输的真相,跨境文件传输更不简单...
  7. mysql查看客户端执行的语句_查看MySQL最近执行的语句-阿里云开发者社区
  8. python 近期用到的基础知识汇总(主要是numpy和pytorch的相关矩阵变化函数)(一)
  9. 【java笔记】StringBuilder类
  10. php电子面单接口,可一次性接入全国45家主流快递~顺丰、京东、邮政、EMS、德邦、四通一达
  11. hpm1005能扫描不能打印_惠普M1005怎么只能打印复印不能扫描了?
  12. 企业内的ITSM软件/ITIL流程管理系统与OA系统有什么区别和关系?
  13. Java基础篇--集合(collection)
  14. PHP高性能编程-提高PHP速度-加速PHP执行-PHP性能优化实践
  15. PXE自动安装Linux系统
  16. TCP UDP之网络编程及数据库入门
  17. linux常用命令 yum service ps
  18. 战争艺术 java_战争艺术2网络对战版
  19. Rosalind第八题:将RNA转化成蛋白质
  20. NLP神经网络之一维卷积的处理【Conv1D】和GLU层

热门文章

  1. [心情文字] 总有那么几张图感动你,逗乐你…… (转自NGA)
  2. 微信小程序:【应用评测】,最强小程序推荐、测评、收录入口
  3. 可执行代码和命令执行
  4. mysql密码一般设置什么格式_mysql更改密码_如何更改mysql root用户密码
  5. 异星探险家自建服务器,异星探险家怎么开服务器 服务器创造详解
  6. 面向对象的 ABAP 编程初探 - 什么是类,实例,和 Public 方法
  7. 【graceup系列】--基于Java带数字签名的邮件收发系统
  8. 励志22岁Android程序员小伙高中学历,现上海拿到25K offer,不迭代升级还等着被取代吗?
  9. 七大壁纸网站满足所有分辨率需求!
  10. 我的联想笔记本按f12进不了u盘启动项怎么办?