Description

link

给定\(n\),\(m\),\(k\),计算

\[\sum_ {i=1}^n \sum^m_{j=1} gcd(i,j)^k \space mod \space 10^9+7
\]

Solution

这种带着 \(gcd\) 的题目就是要反演对吧

然后我们设:

\[f(n)=n^k=\sum_{d|n} g(d)
\]

\[g(n)=\sum_{d|n} f(d) \mu(\frac{n}{d})
\]

所以我们化简一下原式:

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

\[=\sum_ {i=1}^n \sum^m_{j=1}f(gcd(i,j))
\]

\[=\sum_ {i=1}^n \sum^m_{j=1}\sum_{d|gcd(i,j)} g(d)
\]

更换枚举的顺序:(先枚举\(d\))

\[\sum^{min(n,m)}_ {d=1}\sum_{d|i}^{n}\sum^m_{d|j}\space g(d)
\]

\[\sum^{min(n,m)}_ {d=1} \lfloor\dfrac{n}{d}\rfloor \lfloor \frac{m}{d}\rfloor g(d)
\]

然后经过考虑复杂度的问题,我们只能线性筛\(g(x)\)

这里的具体过程看代码吧

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace yspm{
inline int read()
{
int res=0,f=1; char k;
while(!isdigit(k=getchar())) if(k=='-') f=-1;
while(isdigit(k)) res=res*10+k-'0',k=getchar();
return res*f;
}
const int N=5e6,mod=1e9+7;
int T,k,pri[N],g[N],tot,f[N];
bool fl[N];
inline int ksm(int x,int y)
{
int res=1; for(;y;y>>=1){if(y&1) (res*=x)%=mod; (x*=x)%=mod;}
return res;
}
inline void prework()
{
f[1]=1;
for(int i=2;i<N;++i)
{
if(!fl[i]) pri[++tot]=i,g[tot]=ksm(i,k),f[i]=(g[tot]-1+mod)%mod;
for(int j=1;j<=tot&&i*pri[j]<N;++j)
{
fl[i*pri[j]]=1;
if(i%pri[j]==0){f[i*pri[j]]=f[i]*g[j]%mod; break;}
else{f[i*pri[j]]=f[i]*f[pri[j]]%mod;}
}
} for(int i=1;i<N;++i) (f[i]+=f[i-1])%=mod;
return ;
}
inline void work()
{
int ans=0,n=read(),m=read(),T=min(n,m);
for(int l=1,r;l<=T;l=r+1)
{
r=min(n/(n/l),m/(m/l));
ans+=(f[r]-f[l-1]+mod)*(n/l)%mod*(m/l)%mod; ans%=mod;
}
return printf("%lld\n",ans),void();
}
signed main()
{
T=read(); k=read(); prework(); while(T--) work();
return 0;
}
}
signed main(){return yspm::main();}

LGOJ4449 于神之怒加强版的更多相关文章

  1. 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛

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

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

    [BZOJ4407]于神之怒加强版(莫比乌斯反演) 题面 BZOJ 求: \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)^k\] 题解 根据惯用套路 把公约数提出来 \[\sum ...

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

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

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

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

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

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

  6. [BZOJ4407]于神之怒加强版

    BZOJ挂了... 先把程序放上来,如果A了在写题解吧. #include<cstdio> #include<algorithm> #define N 5000010 #def ...

  7. BZOJ 4407 于神之怒加强版

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

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

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

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

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

随机推荐

  1. 查找ARP攻击源

    问题: 内网有电脑中了ARP病毒,但是网络拓扑比较复杂.电脑数量较多,排查起来很困难.有什么方法可以找出ARP攻击源?[推荐3]排查方法: 1.使用Sniffer抓包.在网络内任意一台主机上运行抓包软 ...

  2. MySQL视图和事务

    视图的操作                                                                                                ...

  3. 开始新建AEM站点-周末教程

    Getting Started Developing AEM Sites - WKND Tutorial 开始新建AEM站点-周末教程 The goal for this multi-part tut ...

  4. Mybatis实现联合查询(六)

    1. 疑问 在之前的章节中我们阐述了如何用Mybatis实现检查的查询,而我们实际的需求中,绝大部分查询都不只是针对单张数据表的简单查询,所以我们接下来要看一下Mybatis如何实现联合查询. 2. ...

  5. Maven--部署构件至 Nexus

    日常开发生成的快照版本构件可以直接部署到 Nexus 中策略为 Snapshot 的宿主仓库中,项目正式发布的构件则应该部署到 Nexus 中策略为 Release 的宿主仓库中. <proje ...

  6. 计算机utf-8/gbk/utf-16对照表

    GBK   UTF-16 UTF-8 ==================D2BB  4E00  E4 B8 80  一B6A1  4E01  E4 B8 81  丁C6DF  4E03  E4 B8 ...

  7. 91.一次性处理多条数据的方法:bulk_create,update,delete

    (1)bulk_create: 可以一次性的创建多个对象 示例代码如下: from django.http import HttpResponse from .models import Pulish ...

  8. dfs--汉诺塔

    在研究汉诺塔问题时,我们可以先分析俩个盘子的方法: 1.把第一个盘子放到辅助柱子上 2.把第二个盘子放大目标柱子上 3.把第一个盘子从辅助柱子移到目标柱子上 由此我们可以通过整体思想推导出一共有n个盘 ...

  9. BeanFactory和ApplicationContext的区别(Bean工厂和应用上下文)

    https://blog.csdn.net/qq_20757489/article/details/88543252 https://blog.csdn.net/pythias_/article/de ...

  10. python学习笔记-函数与可变长参数

    一.函数 1. def test(x): y=x+1 return yprint(test) #这是打印函数在内存中的地址 过程:就是没有返回值的函数 在python中过程也是函数,就算没哟返回值,也 ...