【bzoj】P4407于神之怒加强版(莫比乌斯反演)
套路一般的枚举$gcd(i,j)=w$。设$min(n,m)=top$,则有
$\sum\limits_{i=1}^{n}\sum\limits_{j=1}{m}gcd(i,j)$
$=\sum\limits_{w=1}^{top}w^{k}\sum\limits_{w|i}^{n}\sum\limits_{w|j,(i,j)=w}^{m}1$
我们设$f(w)=\sum\limits_{w|i}^{n}\sum\limits_{w|j,(i,j)=w}^{m}1$
$F(w)=\sum\limits_{w|i}^{n}\sum\limits_{w|j}^{m}1$
则有$F(w)=\sum\limits_{w|d}f(d)$
然后就根据莫比乌斯反演公式
$f(w)=\sum\limits_{w|d}\mu(\frac{d}{w})F(w)$
然后容易想到$F(w)=\frac{n}{w}\frac{m}{w}$
然后就有了原式
$=\sum\limits_{w=1}^{top}w^{k}\sum\limits_{d=1}^{\frac{top}{w}}\mu(d)\frac{n}{wd}\frac{m}{wd}$
然后……Timelimitexceed,我就看题解了。
枚举t=wd。然后数论分块乱搞。
讲道理我如果抗住题解的诱惑自己推的话还是可以推出来的qwq。
#include<cstdio>
#include<cctype>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#define maxn 6000010
#define mod 1000000007
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} int miu[maxn];
bool s[maxn];
int prime[],tot;
long long mul[maxn];
long long sum[maxn]; long long Pow(long long n,int i,long long p){
long long ret=;
while(i){
if(i&) ret=(ret*n)%p;
n=(n*n)%p;
i>>=;
}
return ret;
} int main(){
int T=read(),L=read();
miu[]=mul[]=sum[]=;
for(int i=;i<maxn;++i){
if(!s[i]){
prime[++tot]=i;
mul[tot]=Pow(i,L,mod);
sum[i]=mul[tot]-;
}
for(int j=;j<=tot&&1LL*i*prime[j]<=maxn;++j){
s[i*prime[j]]=;
if(i%prime[j]) sum[i*prime[j]]=(1ll*sum[i]*sum[prime[j]])%mod;
else{
sum[i*prime[j]]=(1ll*sum[i]*mul[j])%mod;
break;
}
}
}
for(int i=;i<maxn;++i){
sum[i]+=sum[i-];
sum[i]%=mod;
}
while(T--){
int n=read(),m=read();
int top=min(n,m);
int x=; long long ans=;
if(n>m) swap(n,m);
while(x<=top){
int y=min(n/(n/x),m/(m/x));
ans+=1ll*(n/x)*(m/x)%mod*(sum[y]-sum[x-])%mod;
ans%=mod;
x=y+;
}
printf("%lld\n",(ans+mod)%mod);
}
return ;
} /*
1 2
3 3
*/
【bzoj】P4407于神之怒加强版(莫比乌斯反演)的更多相关文章
- BZOJ 4407 于神之怒加强版 (莫比乌斯反演 + 分块)
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 1067 Solved: 494[Submit][Status][Disc ...
- 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 求\[\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^K\ \mod\ 10^9+7\] Solution 前面部分依旧套路. \[\begin{ ...
- BZOJ 4407: 于神之怒加强版 莫比乌斯反演 + 线筛积性函数
Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意 ...
- 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 241 Solved: 119[Submit][Status][Discu ...
- BZOJ4407 于神之怒加强版 - 莫比乌斯反演
题解 非常裸的莫比乌斯反演. 但是反演完还需要快速计算一个积性函数(我直接用$nlogn$卷积被TLE了 推荐一个博客 我也不想再写一遍了 代码 #include<cstring> #in ...
- bzoj 4407 于神之怒加强版 (反演+线性筛)
于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 1184 Solved: 535[Submit][Status][Discuss] D ...
- 【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛
题目描述 给下N,M,K.求 输入 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示. 输出 如题 ...
- 【BZOJ4407】于神之怒加强版 莫比乌斯反演
[BZOJ4407]于神之怒加强版 Description 给下N,M,K.求 Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行, ...
- 洛谷 - P4449 - 于神之怒加强版 - 莫比乌斯反演
https://www.luogu.org/problemnew/show/P4449 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{i=1}^{m} gcd(i, ...
随机推荐
- Android颜色选择器介绍
使用Android的颜色选择器可以让我们的view在不同状态下显示不同的颜色. 1.Android中ListView 选择某项改变该行字体颜色 2.文件位置 res/color/filename.xm ...
- python递归与非递归实现斐波那契数列
1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). 递归实现: class Solution(): def Fibnacci(self ...
- Paper: 《Bert》
Bert: Bidirectional Encoder Representations from Transformers. 主要创新点:Masked LM 和 Next sentence predi ...
- vector 下标操作
比如:vector<int> ivec(3).. 当采用下标操作ivec[10]的时候,该操作是未定义的,在自己的机器上输出的值是零.建议使用迭代器进行操作.
- 01_2_模拟spring装载bean
01_2_模拟spring装载bean 1. xml配置文件内容 beans.xml <beans> <bean id="u" class="com.w ...
- TCP/UDP 协议介绍
TCP/IP五层网络结构模型 物理层:物理层建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特 (bit) 流传输.只有该层为真实物理通信,其它各层为虚拟通信 数据 ...
- js中实现杨辉三角
实现效果:杨辉三角 即: 提示用户输入要实现的杨辉三角行数: 请输入杨辉三角的行数: 8 代码实现后的效果如下: 1 1.1 1.2.1 1.3.3.1 1.4.6.4.1 1.5.10.10.5.1 ...
- 【bitset 技巧 分块】bzoj5087: polycomp
神仙zq发现了${n^2\sqrt n}\over 32$做法 Description 你有三个系数为0,1的多项式f(x),g(x),h(x) 求f(g(x)) mod h(x) 为方便起见,将答案 ...
- 洛谷 2387/BZOJ 3669 魔法森林
3669: [Noi2014]魔法森林 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 3765 Solved: 2402[Submit][Statu ...
- PHPStorm+XDebug进行调试图文教程
这篇文章主要为大家详细介绍了PHPStorm+XDebug进行调试图文教程,内容很丰富,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 另外如果你们加载不出图片,另外的地址:转载地址https:// ...