【BZOJ4407】于神之怒加强版(莫比乌斯反演)

时间:2022-08-31 11:55:44

【BZOJ4407】于神之怒加强版(莫比乌斯反演)

题面

BZOJ

求:

\[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k
\]

题解

根据惯用套路

把公约数提出来

\[\sum_{d=1}^nd^k\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]
\]

再提一次

\[\sum_{d=1}^nd^k\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[gcd(i,j)==1]
\]

后面这个东西很显然可以数论分块+莫比乌斯反演做到\(O(\sqrt n)\)

前面枚举的\(d\)也可以数论分块,于是我们可以做到复杂度\(O(n)\)

但是有多组询问,这样的复杂度还不够

把后面的式子直接换成莫比乌斯反演推出来的式子

\[\sum_{d=1}^nd^k\sum_{i=1}^{n/d}\mu(i)[\frac{n/d}{i}][\frac{m/d}{i}]
\]

\(d\)除在上面太丑了

\[\sum_{d=1}^nd^k\sum_{i=1}^{n/d}\mu(i)[\frac{n}{id}][\frac{m}{id}]
\]

令\(T=id\)

\[\sum_{d=1}^nd^k\sum_{i=1}^{n/d}\mu(i)[\frac{n}{T}][\frac{m}{T}]
\]

把\(T\)给拎出来

\[\sum_{T=1}^n[\frac{n}{T}][\frac{m}{T}]\sum_{d|T}d^k\mu(\frac{T}{d})
\]

后面这玩意是一个积性函数,可以线性筛出来

前面的东西可以数论分块

所以,最后总的复杂度就是\(O(\sqrt n)\)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define MOD 1000000007
#define MAX 5000000
inline int read()
{
int x=0,t=1;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int fpow(int a,int b)
{
int s=1;
while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}
return s;
}
int n,m,K;
int pri[MAX],tot;
int sum[MAX+1000],s[MAX];
bool zs[MAX+1000];
void pre()
{
zs[1]=true;sum[1]=1;
for(int i=2;i<=MAX;++i)
{
if(!zs[i])pri[++tot]=i,s[tot]=fpow(i,K),sum[i]=s[tot]-1;
for(int j=1;j<=tot&&i*pri[j]<=MAX;++j)
{
zs[i*pri[j]]=true;
if(i%pri[j]==0){sum[i*pri[j]]=1ll*sum[i]*s[j]%MOD;break;}
else sum[i*pri[j]]=1ll*sum[i]*sum[pri[j]]%MOD;
}
}
for(int i=1;i<=MAX;++i)sum[i]=(sum[i]+sum[i-1])%MOD;
}
int main()
{
int T=read();K=read();
pre();
while(T--)
{
n=read();m=read();if(n>m)swap(n,m);
int i=1,j;
long long ans=0;
while(i<=n)
{
j=min(n/(n/i),m/(m/i));
ans+=1ll*(n/i)*(m/i)%MOD*(sum[j]-sum[i-1])%MOD;
ans%=MOD;
i=j+1;
}
printf("%lld\n",(ans+MOD)%MOD);
}
return 0;
}

【BZOJ4407】于神之怒加强版(莫比乌斯反演)的更多相关文章

  1. BZOJ4407 于神之怒加强版 - 莫比乌斯反演

    题解 非常裸的莫比乌斯反演. 但是反演完还需要快速计算一个积性函数(我直接用$nlogn$卷积被TLE了 推荐一个博客 我也不想再写一遍了 代码 #include<cstring> #in ...

  2. BZOJ4407&colon; 于神之怒加强版&lpar;莫比乌斯反演 线性筛&rpar;

    Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d ...

  3. 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 &plus; 线性筛

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MBSubmit: 241  Solved: 119[Submit][Status][Discu ...

  4. 【BZOJ4407】于神之怒加强版 莫比乌斯反演

    [BZOJ4407]于神之怒加强版 Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行, ...

  5. 【bzoj4407】于神之怒加强版 莫比乌斯反演&plus;线性筛

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

  6. BZOJ 4407 于神之怒加强版 &lpar;莫比乌斯反演 &plus; 分块&rpar;

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

  7. 洛谷 - P4449 - 于神之怒加强版 - 莫比乌斯反演

    https://www.luogu.org/problemnew/show/P4449 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{i=1}^{m} gcd(i, ...

  8. BZOJ 4407&colon; 于神之怒加强版 &lbrack;莫比乌斯反演 线性筛&rsqb;

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

  9. BZOJ&period;4407&period;于神之怒加强版&lpar;莫比乌斯反演&rpar;

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

  10. luogu4449 于神之怒加强版&lpar;莫比乌斯反演&rpar;

    link 给定n,m,k,计算\(\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k\)对1000000007取模的结果 多组数据,T<=2000,1<=N,M,K&l ...

随机推荐

  1. &lbrack;SharpZipLib 未能加载文件或程序集&rsqb; 解决方法

    未能加载文件或程序集"ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6a ...

  2. Django忘记管理员账号和密码的解决办法

    看着Django的教程学习搭建网站,结果忘记第一次创建的账号和密码了.结果搭建成功以后,一直无法登陆到管理页面,进行不下去了. 如图所示: 在网上找了很多的方法都不行,最后使用新建一个superuse ...

  3. iOS 中&commat;property&lpar;&rpar; 括号中,可以填写的属性?

    通过@property 和 @synthesize 属性可以简化设置器(set)和访问器(get) 的代码. 在@property 中又有那些属性呢? readwrite 默认 readonly 只读 ...

  4. 彻底解决iOS项目中 &amp&semi;quot&semi;&lowbar;OBJC&lowbar;CLASS&lowbar;&dollar;&lowbar;XXXService&amp&semi;quot&semi;&comma; referenced from&colon; 的相似问题

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmllcGVuZzEwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  5. 基于visual Studio2013解决C语言竞赛题之0604二维数组置换

     题目

  6. Java-HttpServletRequest

    //继承了ServletRequest接口,给servlet提供Request请求信息,servlet 容器会创建以后HttpServletRequest对象 //并把它作为一个参数给service函 ...

  7. zuul 自定义路由规则

    1,zuul的maven配置 <!--spring cloud 相关包--><parent> <groupId>org.springframework.boot&l ...

  8. 使用Consul 实现 MagicOnion&lpar;GRpc&rpar; 服务注册和发现

    1.下载打开Consul 笔者是windows下面开发的(也可以使用Docker). 官网下载windows的Consul https://www.consul.io/ 使用cmd窗口打开,输入con ...

  9. python之路--关于线程的一些方法

    一 . 线程的两种创建方式 from threading import Thread # 第一种创建方式 def f1(n): print('%s号线程任务'%n) def f2(n): print( ...

  10. 案例:Spark基于用户的协同过滤算法

    https://mp.weixin.qq.com/s?__biz=MzA3MDY0NTMxOQ==&mid=2247484291&idx=1&sn=4599b4e31c2190 ...