莫比乌斯反演

还是推式子:

设$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. Java07 异常

    一.Error 和 Exception 1.什么是异常 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格 ...

  2. IaaS--云虚拟机(二)(何恺铎《深入浅出云计算》笔记整理)

    [如何挑选合适的虚拟机型号] 1.根据类型.云厂商会提供均衡型.计算密集型.内存优化型.图形计算型等常见的虚拟机类型.这些类型对应着硬件资源的某种合理配比或针对性强化,方便你在面向不同场景时,选择最合 ...

  3. 6.mysql优化案例

    1.单表优化:  进行优化: 删除原来的三个字段的索引,创建二个字段的索引: 2.两表关联: 左连接,在右表创建索引   右连接,在左表创建索引: 3.三表关联:左关联全都在右表创建索引:

  4. 数据仓库服务 GaussDB(DWS)

    官网:总体介绍 https://support.huaweicloud.com/dws/index.html 部分源码解读 https://my.oschina.net/gaussdb?tab=new ...

  5. jenkins+stf+airtest实现移动端自动化测试平台

    背景: 公司android测试机比较多没有统一的管理: app自动化测试时获取设备的状态比较麻烦,通过STF可以轻松获取: 自动化异常场景时.可远程操控设备: 需要随时了解设备情况: 装逼 前提: 已 ...

  6. 性能再升级,XMeter Cloud 专业版正式上线

    去年 8 月,EMQ 正式在全球市场推出了最简单.快速的 MQTT 负载和场景测试云服务--XMeter Cloud,用户无需部署即可进行 MQTT 测试,以更低的测试成本轻松打造具有竞争力的可靠物联 ...

  7. 升级安装cuda

    下载驱动: https://www.nvidia.com/Download/Find.aspx 在这里下载并按照指导安装: https://developer.nvidia.com/cuda-down ...

  8. ts的装饰器

    console.log('装饰器.......') // 装饰器就是一个方法,可以注入到类,方法,属性上来拓展类,属性,方法,参数的功能 // 常见:类装饰器,属性装饰器,方法装饰器,参数装饰器 // ...

  9. VSFTPD的基础安全加固

    与SSL配置相关的设置(要添加) ssl_enabe=YES| NO #是否启用ssl ssl_sslv2=YES|NO #是否激活sslv2加密 ssl_sslv3=YES|NO #是否激活sslv ...

  10. Vim文本编码之坑

    #20220503更新# 今天又遇到一个问题,即常见的"cat显示正常,vi显示异常"的问题. 有这样一个文件,它的编码是UTF-16(DOS),在windows下用UltraEd ...