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

7558588 9653114

6514903 4451211

7425644 1189442

6335198 4957

Sample Output

35793453939901

14225956593420

4332838845846

15400094813

HINT

T<=10000

1<=a,b<=10^7

sol

先推式子,假设a<b,枚举gcd:

\(ans=\sum_{i=1}^{a}\sum_{j=1}^{b}f(i,j)\)

\(=\sum_{d=1}^{a}f(d)\sum_{i=1}^{\lfloor\frac{a}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{b}{d}\rfloor}[(i,j)=1]\)

\(=\sum_{d=1}^{a}f(d)\sum_{i=1}^{\lfloor\frac{a}{d}\rfloor}\mu(i)\lfloor\frac{a}{id}\rfloor\lfloor\frac{b}{id}\rfloor\)

\(=\sum_{T=1}^{a}\lfloor\frac{a}{T}\rfloor\lfloor\frac{b}{T}\rfloor\sum_{d|T}f(d)\mu(\frac{T}{d})\)

前面那个玩意直接数论分块就可以了,然后分析后面的式子:

我们只考虑没有平方因子的T/d,那么此时f(d)的取值只有两种:T最高次质因数幂-1或者T最高次质因数幂。

如果取的是最高次质因数幂,那么我们发现,T/d中剩下的数字次数可以是0也可以是1,那么根据莫比乌斯函数的定义,\(\mu(\frac{T}{d})\)一定等于0,不会产生任何贡献。

如果取的是最高次质因数幂-1,那么我们发现,满足最高次幂的指数在T/d中都是1次项,其他数字随意,根据莫比乌斯函数的定义,mu一定是0,不会产生任何贡献。

所以现在只剩下了两种情况:1.质数2.d中所有次幂都相等

线性筛即可,线性筛处理出每个数字最高次质因数幂和最高次质因数幂的乘积,便可以在线性筛中直接判断。

code

#include <bits/stdc++.h>
using namespace std;
int g[10000007],a[10000007],pri[10000007],vis[10000007],sum[10000007],ma[10000007],T,n,m,tot;
long long cal(int a,int b)
{
if(a>b) swap(a,b);
long long ans=0;
for(int i=1,last=0;i<=a;i=last+1) last=min(a/(a/i),b/(b/i)),ans+=1ll*(a/i)*(b/i)*(sum[last]-sum[i-1]);
return ans;
}
int main()
{
for(int i=2;i<=1e7;i++)
{
if(!vis[i]){pri[++tot]=i;g[i]=1,a[i]=1;ma[i]=i;}
for(int j=1,k;j<=tot&&(k=i*pri[j])<=1e7;j++)
{
vis[k]=1;
if(i%pri[j]==0)
{
a[k]=a[i]+1;ma[k]=ma[i]*pri[j];
if(i==ma[i]) g[k]=1;
else g[k]=(a[i/ma[i]]==a[k]?-g[i/ma[i]]:0);
}
else a[k]=1,ma[k]=pri[j],g[k]=(a[i]==1?-g[i]:0);
}
sum[i]=sum[i-1]+g[i];
}
for(scanf("%d",&T);T--;printf("%lld\n",cal(n,m))) scanf("%d%d",&n,&m);
}

【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛的更多相关文章

  1. [BZOJ3309]DZY Loves Math(莫比乌斯反演+线性筛)

    $\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{d|T}f(d)\mu(\fr ...

  2. 【BZOJ3309】DZY Loves Math 莫比乌斯反演+线性筛(好题)

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

  3. 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| ...

  4. 【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) ...

  5. bzoj 3309 DZY Loves Math 莫比乌斯反演

    DZY Loves Math Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1303  Solved: 819[Submit][Status][Dis ...

  6. BZOJ3309 DZY Loves Maths 莫比乌斯反演、线性筛

    传送门 推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^Mf(gcd(i,j)) & = ...

  7. 【BZOJ3309】DZY Loves Math - 莫比乌斯反演

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

  8. BZOJ 3309 DZY Loves Math ——莫比乌斯反演

    枚举$d=gcd(i,j)$ 然后大力反演 ——来自Popoqqq的博客. 然后大力讨论后面的函数的意义即可. http://blog.csdn.net/popoqqq/article/details ...

  9. bzoj 3309 DZY Loves Math —— 莫比乌斯反演+数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3309 凭着上课所讲和与 Narh 讨论推出式子来: 竟然是第一次写数论分块!所以迷惑了半天: ...

随机推荐

  1. 用Dos黑窗口运行Cmd命令

    public class BlackWindow { private static BlackWindow _instance; public static BlackWindow Instance ...

  2. oracle10g Error in invoking target 'install' of makefile

    oracle10g series error error in invoking target 'install' of makefile /u01/app/oracle/oracle/product ...

  3. Python 的mock模拟测试介绍

    如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...

  4. python实现文件下载的方法总结

    前端时间遇到一个通过url下载文件的需求,只需要简单的编写一个py脚本即可.从网上搜了下python实现文件下载的方法,总结如下,备查. 以下方法均已测试,环境win8.1  python2.6/2. ...

  5. 2009-2010网络最热的&nbsp;嵌入式…

    前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友 ...

  6. Eclipse下使用Subversion(SVN工具)

    本文目的 让未使用过版本控制器软件或者未使用过subversion软件的人员尽快上手. subversion的使用技巧很多,这里只总结了最小使用集,即主要的基本功能,能够用来应付日常工作. 因此不涉及 ...

  7. 【HDU4960】Another OCD Patient

    题意 给出一个长度为n的整数序列.可以将一段连续的序列进行合并.合并的长度不同代价不同.问付出最少多少代价可以将这个序列变成一个对称的序列.n<=5000 分析 一看题感觉是个dp很好写啊.f[ ...

  8. Angular25 组件的生命周期钩子

    1 生命周期钩子概述 组件共有9个生命周期钩子 1.1 生命周期的执行顺序 技巧01:测试时父组件传递对子组件的输入属性进行初始化操作 import { Component, Input, Simpl ...

  9. spring aop自动代理注解配置之二

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. Docker学习笔记_安装和使用mysql

    一.系统环境和准备 1.宿主机OS:Win10 64位 2.虚拟机OS:Ubuntu18.04 3.操作账号:docker 二.安装 1.搜索mysql镜像:docker search mysql 2 ...