莫比乌斯反演

还是推式子:

设$f(n)=n^{k}$

那就是上一道题了

推的过程如下:

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

$\sum_{i=1}^{a}\sum_{j=1}^{b}\sum_{d=1}^{min(a,b)}[gcd(i,j)\equiv d]f(d)$

$\sum_{d=1}^{min(a,b)}f(d)\sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(i,j)\equiv d]$

$\sum_{d=1}^{min(a,b)}f(d)\sum_{i=1}^{\frac{a}{d}}\sum_{j=1}^{\frac{b}{d}}[gcd(i,j)\equiv 1]$

$\sum_{d=1}^{min(a,b)}f(d)\sum_{i=1}^{\frac{a}{d}}\sum_{j=1}^{\frac{b}{d}}\sum_{t=1}^{min(\frac{a}{d},\frac{b}{d})}\mu(t)$

$\sum_{d=1}^{min(a,b)}f(d)\sum_{t=1}^{min(a,b)}\mu(t)\frac{a}{dt}\frac{b}{dt}$

令$T=dt$,得到:

$\sum_{T=1}^{min(a,b)}\frac{a}{T}\frac{b}{T}\sum_{d|T}f(d)\mu(\frac{T}{d})$

也就是:

$\sum_{T=1}^{min(a,b)}\frac{a}{T}\frac{b}{T}\sum_{d|T}d^{k}\mu(\frac{T}{d})$

考虑线性筛后面那堆东西,仍然分类讨论:

①.筛到的$p$与$i$互质:

此时我们考虑增加一个$p$的贡献,如果增加到$\mu$里,则原先那些直接取反

如果增加到$d^{k}$里,则相当于原先那些乘$p^{k}$

因此$g(ip)=(p^{k}-1)g(i)$

②.筛到的$p$与$i$不互质:

此时我们考虑增加一个$p$的贡献,如果增加到$\mu$里,则原先那些仍然取反

如果增加到$f$里,则原先那些多一个$p^{k}$的贡献

可...等等!

还有一种可能!

再考虑如果原先$\mu$里有一个$p$,然后增加到$f$里,此时会抵消掉取反的效果!

因此只需乘一个$p^{k}$即可

贴代码:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#define ll long long
using namespace std;
const ll mode=1000000007;
int mu[5000005];
int pri[5000005];
ll f[5000005];
ll pow_mul(ll x,ll y)
{
ll ret=1;
while(y)
{
if(y&1)ret=ret*x%mode;
x=x*x%mode,y>>=1;
}
return ret;
}
bool used[10000005];
int cnt=0;
ll T,x,y,k;
void init()
{
mu[1]=1;
f[1]=1;
for(int i=2;i<=5000000;i++)
{
if(!used[i])mu[i]=-1,pri[++cnt]=i,f[i]=(pow_mul(i,k)+mode-1)%mode;
for(int j=1;j<=cnt&&i*pri[j]<=5000000;j++)
{
used[i*pri[j]]=1;
if(i%pri[j]==0)
{
mu[i*pri[j]]=0;
f[i*pri[j]]=f[i]*(f[pri[j]]+1)%mode;
break;
}
mu[i*pri[j]]=-mu[i],f[i*pri[j]]=f[i]*f[pri[j]]%mode;
}
}
for(int i=2;i<=5000000;i++)f[i]+=f[i-1],f[i]%=mode;
}
ll solve(ll a,ll b)
{
ll las=1,ans=0;
for(int i=1;i<=a&&i<=b;i=las+1)
{
las=min(a/(a/i),b/(b/i));
ans+=(f[las]-f[i-1]+mode)*(a/i)%mode*(b/i)%mode;
ans%=mode;
}
return ans;
}
template <typename T>inline void read(T &x)
{
T f=1,c=0;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){c=c*10+ch-'0';ch=getchar();}
x=c*f;
}
int main()
{
read(T),read(k);
init();
while(T--)
{
read(x),read(y);
printf("%lld\n",solve(x,y));
}
return 0;
}

bzoj 4407的更多相关文章

  1. BZOJ 4407 于神之怒加强版

    http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题意: 给下N,M,K.求 思路:  来自:http://blog.csdn.net/ws_y ...

  2. ●BZOJ 4407 于神之怒加强版

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题解: 莫比乌斯反演 直接套路化式子 $\begin{align*}ANS&= ...

  3. BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 1067  Solved: 494[Submit][Status][Disc ...

  4. bzoj 4407 于神之怒加强版——反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 \( ans = \sum\limits_{D=1}^{min(n,m)}\frac{ ...

  5. bzoj 4407 于神之怒加强版 (反演+线性筛)

    于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 1184  Solved: 535[Submit][Status][Discuss] D ...

  6. bzoj 4407 于神之怒加强版 —— 反演+筛积性函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 推导如这里:https://www.cnblogs.com/clrs97/p/5191 ...

  7. BZOJ 4407: 于神之怒加强版 [莫比乌斯反演 线性筛]

    题意:提前给出\(k\),求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m gcd(i,j)^k\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d|D ...

  8. 【bzoj 4407】于神之怒加强版

    Description 给下N,M,K.求     Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意 ...

  9. BZOJ.4407.于神之怒加强版(莫比乌斯反演)

    题目链接 Description 求\[\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^K\ \mod\ 10^9+7\] Solution 前面部分依旧套路. \[\begin{ ...

  10. bzoj 4407: 于神之怒加强版【莫比乌斯反演+线性筛】

    看着就像反演,所以先推式子(默认n<m): \[ \sum_{d=1}^{n}d^k\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d] \] \[ =\sum_{d=1} ...

随机推荐

  1. (0807) import 与 include文件

    1)验证中filelist以及package https://blog.csdn.net/geter_CS/article/details/125689476 总结来说:规则是,要想使用某个文件内容, ...

  2. 调度器44—root_domain—更新路径

    1.  root_domain 的路径的赋值路径 kernel_init_freeable //内核初始化路径调用 [2] sched_init_smp //core.c 传参 cpu_active_ ...

  3. secret或configmap对象key名称带点,env命令不显示分析

    分享一个最近在排查的问题: k8s的 secret 或 configmap 对象,如果 key 名称是带[.]的,比如[a.b.c .db.host]这种名称,注入到POD后,使用env等命令查看不到 ...

  4. excel、word、PPT中插入PDF文件不显示图标问题

    插入PDF对象,不显示正确的PDF图标 临时解决办法:手动修改对象图标 具体位置,可在C:\Windows\Installer目录下搜索PDFFile_8.ico 尝试如下操作: 手动复制生成C:\W ...

  5. Stream流、lambda表达式、方法引用、构造引用

    函数式接口 函数接口为lambda表达式和方法引用提供目标类型,就是提供支持的接口里面只有且必须只有一个抽象方法, 如果接口只有一个抽象方法,java默认他为函数式接口 @FunctionalInte ...

  6. -behaviour()的使用,他具体有什么作用

    Eralng 编程中的OTP OTP里面创建进程时 常用有四大behaviour • supervisor • gen_server • gen_fsm • gen_event 在erlang的编译器 ...

  7. JS字符串拼接的方法及性能比较

    一.+和+=str += "one" + "two";这段代码在运行过程中,会经历四个步骤:1.在内存中创建一个临时字符串2.将连接后的字符串"one ...

  8. HFS~HTTP File Server 2.4rc2 20191231

    后台,打卡,这有的 电脑 PC   浏览器 打开 安卓平台,浏览器,打开,界面

  9. npm i不成功devDependencies解决方法

    npm config ls -l 查看npm配置发现production为true,所以i不成功 npm config set production false 将production设置为false ...

  10. C# DateTime转换为字符串

    12小时制:DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 24小时制:DateTime.Now.ToString("yyyy- ...