题链:

http://www.lydsy.com/JudgeOnline/problem.php?id=4407

题解:

莫比乌斯反演

直接套路化式子

$\begin{align*}ANS&=\sum_{i=1}^{n}\sum_{j=1}^{m}gcd(i,j)^k(接下来先枚举gcd的值g,然后求出有多少对(i,j)的gcd=g) \\&=\sum_{g=1}^{min(n,m)}g^k\sum_{d=1}{\frac{n}{g}\mu(d)\lfloor \frac{n}{gd} \rfloor \lfloor \frac{m}{gd} \rfloor}\\ &=\sum_{D=gd=1}^{min(n,m)} \lfloor \frac{n}{D} \rfloor \lfloor \frac{m}{D} \rfloor \sum_{g|D} g^k \mu(\frac{D}{g})\;(令f(D)=\sum_{g|D} g^k \mu(\frac{D}{g}))\\ &=\sum_{D=1}^{min(n,m)} \lfloor \frac{n}{D} \rfloor \lfloor \frac{m}{D} \rfloor f(D) \end{align*}$

如果处理出f(D)那么就可以在$O(\sqrt N)$ 的复杂度内解决每个询问。

因为 $w(x)=x^k 和 \mu(x)$都是积性函数,

所以由狄利克雷乘积的性质可知:

$\begin{align*} f(D)&=\sum_{g|D} g^k \mu(\frac{D}{g}) \\&=\sum_{g|D} w(g) \mu(\frac{D}{g}) \end{align*}$

亦是一个积性函数。

所以直接线筛就好了。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 5000050
using namespace std;
const int mod=1000000007;
int f[MAXN],k;
int Pow(int a,int b){
int ret=1; a=(a%mod+mod)%mod;
while(b){
if(b&1) ret=1ll*ret*a%mod;
b>>=1; a=1ll*a*a%mod;
}
return ret;
}
void Sieve(){
static bool np[MAXN];
static int prime[MAXN],pnt;
f[1]=1;
for(int i=2,tmp,d;i<=5000000;i++){
if(!np[i]) prime[++pnt]=i,f[i]=(Pow(i,k)-1+mod)%mod;
for(int j=1;j<=pnt&&i<=5000000/prime[j];j++){
np[i*prime[j]]=1; tmp=i; d=prime[j];
while(tmp%prime[j]==0) tmp/=prime[j],d*=prime[j];
if(tmp!=1) f[tmp*d]=1ll*f[tmp]*f[d]%mod;
else f[d]=(1ll*Pow(d,k)-Pow(d/prime[j],k)+mod)%mod;
if(i%prime[j]==0) break;
}
}
for(int i=1;i<=5000000;i++) f[i]=(1ll*f[i]+f[i-1])%mod;
}
int main(){
int Case,n,m,mini,ans;
scanf("%d%d",&Case,&k);
Sieve();
while(Case--){
scanf("%d%d",&n,&m);
mini=min(n,m); ans=0;
for(int D=1,last;D<=mini;D=last+1){
last=min(n/(n/D),m/(m/D));
ans=(1ll*ans+1ll*(n/D)*(m/D)%mod*(((1ll*f[last]-f[D-1]+mod)%mod))%mod)%mod;
}
printf("%d\n",ans);
}
return 0;
}

  

●BZOJ 4407 于神之怒加强版的更多相关文章

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

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

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

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

  3. BZOJ 4407 于神之怒加强版

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

  4. bzoj 4407 于神之怒加强版——反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 \( ans = \sum\limits_{D=1}^{min(n,m)}\frac{ ...

  5. bzoj 4407 于神之怒加强版 —— 反演+筛积性函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4407 推导如这里:https://www.cnblogs.com/clrs97/p/5191 ...

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

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

  7. BZOJ.4407.于神之怒加强版(莫比乌斯反演)

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

  8. 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} ...

  9. BZOJ 4407: 于神之怒加强版 莫比乌斯反演 + 线筛积性函数

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

随机推荐

  1. 课堂测试ch06

    课堂测试ch06 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A. 1 B. 1/4 C. 1/2 D. 3/4 解析:在填充了之后,对于x和y数组,只有在引用 ...

  2. c语言博客第二次作业

    一.PTA实验作业 题目1:计算分段函数[2] 1.实验代码 { double x,y; scanf("%lf",&x); if(x>=0) { y=pow(x,0. ...

  3. python实现线性回归

    参考:<机器学习实战>- Machine Learning in Action 一. 必备的包 一般而言,这几个包是比较常见的: • matplotlib,用于绘图 • numpy,数组处 ...

  4. JAVA_SE基础——11.Java中的运算符

    在程序设计中,运算符应用得十分广泛,通过运算符可以将两个变量进行任意运算.数学中的"+"."-"."*"."/"运算符同 ...

  5. Ubuntu命令行连接WPA/WPA2无线网线

    一,连接无加密无线网络zhang:sudo ip link set wlan0 up sudo iw dev wlan0 connect zhangsudo dhclient wlan0 二,连接WP ...

  6. java 实现多文件打包下载

    jsp页面js代码: function downloadAttached(){ var id = []; id.push(infoid); var options = {}; options.acti ...

  7. 新概念英语(1-129)Seventy miles an hour

    Lesson 129 Seventy miles an hour 时速70英里 Listen to the tape then answer this question. What does Ann ...

  8. 新概念英语(1-43)Hurry up!

    新概念英语(1-43)Hurry up! How do you know Sam doesn't make the tea very often? A:Can you make the tea, Sa ...

  9. 新概念英语(1-3)Sorry, sir

    Does the man get his umbrella back? A:My coat and my umbrella please. B:Here is my ticket. A:Thank y ...

  10. jenkins创建pipeline

    新建任务的时候,有两个流水线相关的任务类型,如下图.其中:流水线更加针对单主干模式的开发,在主干目录下放一个Jenkinsfile文件,其中该文件保存了从SCM拉代码.构建.测试.发布等等流程. 而M ...