bzoj 4407
莫比乌斯反演
还是推式子:
设$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的更多相关文章
- BZOJ 4407 于神之怒加强版
http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题意: 给下N,M,K.求 思路: 来自:http://blog.csdn.net/ws_y ...
- ●BZOJ 4407 于神之怒加强版
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4407 题解: 莫比乌斯反演 直接套路化式子 $\begin{align*}ANS&= ...
- BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 1067 Solved: 494[Submit][Status][Disc ...
- bzoj 4407 于神之怒加强版——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 \( ans = \sum\limits_{D=1}^{min(n,m)}\frac{ ...
- bzoj 4407 于神之怒加强版 (反演+线性筛)
于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 1184 Solved: 535[Submit][Status][Discuss] D ...
- bzoj 4407 于神之怒加强版 —— 反演+筛积性函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 推导如这里:https://www.cnblogs.com/clrs97/p/5191 ...
- BZOJ 4407: 于神之怒加强版 [莫比乌斯反演 线性筛]
题意:提前给出\(k\),求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m gcd(i,j)^k\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d|D ...
- 【bzoj 4407】于神之怒加强版
Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意 ...
- BZOJ.4407.于神之怒加强版(莫比乌斯反演)
题目链接 Description 求\[\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^K\ \mod\ 10^9+7\] Solution 前面部分依旧套路. \[\begin{ ...
- 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} ...
随机推荐
- Java07 异常
一.Error 和 Exception 1.什么是异常 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格 ...
- IaaS--云虚拟机(二)(何恺铎《深入浅出云计算》笔记整理)
[如何挑选合适的虚拟机型号] 1.根据类型.云厂商会提供均衡型.计算密集型.内存优化型.图形计算型等常见的虚拟机类型.这些类型对应着硬件资源的某种合理配比或针对性强化,方便你在面向不同场景时,选择最合 ...
- 6.mysql优化案例
1.单表优化: 进行优化: 删除原来的三个字段的索引,创建二个字段的索引: 2.两表关联: 左连接,在右表创建索引 右连接,在左表创建索引: 3.三表关联:左关联全都在右表创建索引:
- 数据仓库服务 GaussDB(DWS)
官网:总体介绍 https://support.huaweicloud.com/dws/index.html 部分源码解读 https://my.oschina.net/gaussdb?tab=new ...
- jenkins+stf+airtest实现移动端自动化测试平台
背景: 公司android测试机比较多没有统一的管理: app自动化测试时获取设备的状态比较麻烦,通过STF可以轻松获取: 自动化异常场景时.可远程操控设备: 需要随时了解设备情况: 装逼 前提: 已 ...
- 性能再升级,XMeter Cloud 专业版正式上线
去年 8 月,EMQ 正式在全球市场推出了最简单.快速的 MQTT 负载和场景测试云服务--XMeter Cloud,用户无需部署即可进行 MQTT 测试,以更低的测试成本轻松打造具有竞争力的可靠物联 ...
- 升级安装cuda
下载驱动: https://www.nvidia.com/Download/Find.aspx 在这里下载并按照指导安装: https://developer.nvidia.com/cuda-down ...
- ts的装饰器
console.log('装饰器.......') // 装饰器就是一个方法,可以注入到类,方法,属性上来拓展类,属性,方法,参数的功能 // 常见:类装饰器,属性装饰器,方法装饰器,参数装饰器 // ...
- VSFTPD的基础安全加固
与SSL配置相关的设置(要添加) ssl_enabe=YES| NO #是否启用ssl ssl_sslv2=YES|NO #是否激活sslv2加密 ssl_sslv3=YES|NO #是否激活sslv ...
- Vim文本编码之坑
#20220503更新# 今天又遇到一个问题,即常见的"cat显示正常,vi显示异常"的问题. 有这样一个文件,它的编码是UTF-16(DOS),在windows下用UltraEd ...