【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, ...
随机推荐
- 恢复为TrustedInstaller权限
每次我们要改动系统文件/文件夹时,都会被提示权限不够,而这个文件的所有者就是TrustInstaller.所以,就出现各种各样的教程,甚至傻瓜式的一键操作,让大家把自己设为文件的所有者,让自己得到最高 ...
- 剑指offer64 数据流中的中位数
priority_queue优先级队列,他的模板声明带有三个参数,priority_queue<Type, Container, Functional> Type 为数据类型, Conta ...
- Sublime +Markdown+OmniMarkupPreviewer 搭建实时预览的markdown编辑器
浏览器实时预览 <meta http-equiv="refresh" content="0.1"> auto save 的配置 {"aut ...
- 在Linux下安装redis
http://www.cnblogs.com/xiaohongxin/p/6854095.html 追加: 通过配置文件启动最好先./redis.cli shutdown ,再到当前目录在./redi ...
- 01_8_sql主键生成方式
01_8_sql主键生成方式 1. 配置映射文件 <insert id="insertStudentBySequence" parameterClass="Stud ...
- Search and Replace -freecodecamp算法题目
Search and Replace 1.要求 使用给定的参数对句子执行一次查找和替换,然后返回新句子. 第一个参数是将要对其执行查找和替换的句子. 第二个参数是将被替换掉的单词(替换前的单词). 第 ...
- 201621123080《Java程序设计》第三周学习总结
Week03-面向对象入门 1. 本周学习总结 2. 书面作业 1.以面向对象方式改造数据结构作业'有理数'(重点) 1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址. ...
- IE浏览器缓存问题解决方法(非常严重)
IE浏览器缓存问题解决方法整理 一.IE浏览器缓存的内容分析: IE浏览器会缓存网页中的GET和XHR的内容,并且在IE浏览器中如果请求方式是get方式的话,IE浏览器会进行识别,如果该get请求的u ...
- 使用Github第二节
接着第一节我们注册完账号接下来我们要创建仓库 注:如果邮箱没收到邮件需要设置域名白名单! 1.设置QQ邮箱白名单 (1)打开QQ邮箱.点击[设置] (2)点击[反垃圾] (3)点击[设置域名白名单] ...
- LeetCode(151) Reverse Words in a String
题目 Given an input string, reverse the string word by word. For example, Given s = "the sky is b ...