题意

默认\(n\leqslant m\)。

一波莫反后可得:

\(\sum\limits_{T=1}^{n}\frac{n}{T}\frac{m}{T}\sum\limits_{d|T}d^k\mu(\frac{T}{d})\)

前面显然是可以除法分块的,后面是个积性函数,可以线性筛。

设\(f(x)=\sum\limits_{d|x}d^k\mu(\frac{x}{d})\)

线性筛时\(i\)中不含\(prime_j\)自然好说,考虑\(i\)中含\(prime_j\)怎么办。

设\(g(i)\)表示\(i\)中最小质因子(即\(prime_j\))的幂,即\(prime_j^k\)。

\(i\not=g(i)\)将\(i\)中的\(prime_j\)除去再算即可:

\(f(i*prime_j)=f(\frac{i}{g(i)})*f(g(i)*prime_j)\)

\(i=g(i)\)这时用上面的式子会出现: \(f(i*prime_j)=f(i*prime_j)*f(1)\)

这时考虑代回原式:

\(f(p^c)=\sum\limits_{d|p^c}d^k\mu(\frac{p^c}{d})\)

\(f(p^{c-1})=\sum\limits_{d|p^{c-1}}d^k\mu(\frac{p^{c-1}}{d})\)

发现\(f(p^c)=f(p^c)*(prime_j)^k+(f(1)^k*\mu(p^c))\)(\(f(1)*\mu(p^c)=0\))。

于是就可以线性筛了,注意\(d^k\)也是积性函数。

code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=5000010;
const ll mod=1000000007;
int T,K,n,m;
int mu[maxn],g[maxn];
ll pw[maxn],f[maxn],sum[maxn];
bool vis[maxn];
vector<int>prime;
inline ll power(ll x,ll k,ll mod)
{
ll res=1;
while(k)
{
if(k&1)res=res*x%mod;
x=x*x%mod;k>>=1;
}
return res;
}
inline void pre_work(int n)
{
vis[1]=1;f[1]=1;mu[1]=1;
for(int i=2;i<=n;i++)
{
//cerr<<i<<endl;
if(!vis[i])prime.push_back(i),pw[i]=power(i,K,mod),f[i]=(pw[i]-1)%mod,g[i]=i,mu[i]=-1;
for(unsigned int j=0;j<prime.size()&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=1;
pw[i*prime[j]]=pw[i]*pw[prime[j]]%mod;
if(i%prime[j]==0)
{
if(i==g[i])f[i*prime[j]]=f[i]*pw[prime[j]]%mod;//+(pw[1]*mu[i*prime[j]]=0);
else f[i*prime[j]]=f[i/g[i]]*f[g[i]*prime[j]]%mod;
g[i*prime[j]]=g[i]*prime[j];
break;
}
f[i*prime[j]]=f[i]*f[prime[j]]%mod;
g[i*prime[j]]=prime[j];
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<=n;i++)sum[i]=(sum[i-1]+f[i])%mod;
}
inline ll solve(int n,int m)
{
if(n>m)swap(n,m);
ll res=0;
for(int l=1,r;l<=n;l=r+1)
{
r=min(n/(n/l),m/(m/l));
res=(res+1ll*(n/l)*(m/l)%mod*((sum[r]-sum[l-1])%mod+mod)%mod)%mod;
}
return (res%mod+mod)%mod;
}
int main()
{
scanf("%d%d",&T,&K);
pre_work(5000000);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%lld\n",solve(n,m));
}
return 0;
}

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

  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. jsp html 实现隐藏输入框,点击可以取消隐藏&&弹出输入框

    jsp代码: <script language="javascript" type="text/javascript"> function chg ...

  2. OC循环方法推荐-块循环遍历(比for循环好用)

    最近在看一本书<Effective OC 2.0>,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环. 阅读时思考了下块循环是否方便实现内部循环终止外部循环的问题. 于是做 ...

  3. webpack-优化阻塞的css

    随着浏览器的日新月异,网页的性能和速度越来越好,并且对于用户体验来说也越来越重要. 现在有很多优化页面的办法,比如:静态资源的合并和压缩,code splitting,DNS预读取等等. 本文介绍的是 ...

  4. pop 与 popitem

    pop给出一个键弹出值 popitem弹出一个项 >>> a.pop(2)'two'>>> a{1: 'one', 3: 'three', 4: 'four'}&g ...

  5. Docker Compose集成式应用组合及service编排

    Compose简介 Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.其代码目前在 https://github.com/docker/compose 开源.C ...

  6. 17-Python执行JS代码--PyExecJS、PyV8、Js2Py

    一.Python执行JS代码--PyExecJS.PyV8.Js2Py 1.1.PyExecJS PyExecJS的优点是您不需要照顾JavaScript环境.特别是,它可以在Windows环境中运行 ...

  7. WeihanLi.Npoi 支持 ShadowProperty 了

    WeihanLi.Npoi 支持 ShadowProperty 了 Intro 在 EF 里有个 ShadowProperty (阴影属性/影子属性)的概念,你可以通过 FluentAPI 的方式来定 ...

  8. 往Github上,上传本地项目

    1.先申请一个Github的帐号,创建一个仓库. 复制这个仓库的地址: 创建完空仓库,页面下方会有提示代码,告诉怎么操作 在本地的项目下依次执行下面的代码: git init   //在本地创建git ...

  9. HYSBZ 1036树链剖分

    一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从 ...

  10. 笔记||Python3之字符串格式化输出

    字符串的格式化输出方法一: 常用的字符串格式化符号:%s   ---   用str()函数进行字符串转换 %d   ---   转成有符号十进制数 %f    ---   转成浮点数(小数部分自然截断 ...