题链:

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

题解:

莫比乌斯反演

$$\begin{aligned}
ANS&=\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)^{gcd(i,j)}\\
&=\sum_{g=1}^{min(n,m)}\sum_{i=1}^{\frac{n}{g}}\sum_{j=1}^{\frac{m}{g}}g^gi^gj^g[gcd(i,j)==1]\\
&=\sum_{g=1}^{min(n,m)}g^g\sum_{i=1}^{\frac{n}{g}}\sum_{j=1}^{\frac{m}{g}}i^gj^g\sum_{d|gcd(i,j)}\mu(d)\\
&=\sum_{g=1}^{min(n,m)}g^g\sum_{d=1}^{min(\frac{n}{g},\frac{m}{g})}\mu(d) \sum_{i=1}^{\frac{n}{gd}}(id)^g\sum_{j=1}^{\frac{m}{gd}}(jd)^g\\
&=\sum_{g=1}^{min(n,m)}g^g\sum_{d=1}^{min(\frac{n}{g},\frac{m}{g})}\mu(d)\times d^{2g} \sum_{i=1}^{\frac{n}{gd}}i^g\sum_{j=1}^{\frac{m}{gd}}j^g\\
\end{aligned}$$

上面这个式子直接$O(NlogN)$计算就好了。

代码:

#include<bits/stdc++.h>
#define MAXN 500050
using namespace std;
const int mod=1000000007;
int mu[MAXN],mi[MAXN],smi[MAXN];
int Pow(int a,int b){
int ret=1;
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;
mu[1]=1;
for(int i=2;i<=500000;i++){
if(!np[i]) prime[++pnt]=i,mu[i]=-1;
for(int j=1;j<=pnt&&i<=500000/prime[j];j++){
np[i*prime[j]]=1;
if(i%prime[j]) mu[i*prime[j]]=-mu[i];
else break;
}
}
}
int main(){
Sieve();
int n,m,ans=0; scanf("%d%d",&n,&m);
if(n>m) swap(n,m);
for(int i=1;i<=500000;i++) mi[i]=1;
for(int g=1,gg;g<=n;g++){
gg=Pow(g,g);
for(int i=1;i<=m/g;i++)
mi[i]=1ll*mi[i]*i%mod,smi[i]=(1ll*smi[i-1]+mi[i])%mod;
for(int d=1;d<=n/g;d++)
ans=(1ll*ans+1ll*mu[d]*mi[d]%mod*mi[d]%mod*smi[n/(g*d)]%mod*smi[m/(g*d)]%mod*gg%mod)%mod;
}
printf("%d",ans);
return 0;
}

  

●BZOJ 3561 DZY Loves Math VI的更多相关文章

  1. BZOJ 3561 DZY Loves Math VI

    BZOJ 3561 DZY Loves Math VI 求\(\sum_{i=1}^{n}\sum_{j=1}^{m}\text{lcm}(i,j)^{\gcd(i,j)}\),钦定\(n\leq m ...

  2. BZOJ 3561: DZY Loves Math VI 莫比乌斯反演+复杂度分析

    推到了一个推不下去的形式,然后就不会了 ~ 看题解后傻了:我推的是对的,推不下去是因为不需要再推了. 复杂度看似很大,但其实是均摊 $O(n)$ 的,看来分析复杂度也是一个能力啊 ~ code: #i ...

  3. 【BZOJ 3561】 3561: DZY Loves Math VI (莫比乌斯,均摊log)

    3561: DZY Loves Math VI Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 205  Solved: 141 Description ...

  4. 【BZOJ】3561: DZY Loves Math VI

    题意 求\(\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)^{gcd(i, j)}\)(\(n, m<=500000\)) 分析 很显然要死推莫比乌斯 题解 设\ ...

  5. 【BZOJ3561】DZY Loves Math VI (数论)

    [BZOJ3561]DZY Loves Math VI (数论) 题面 BZOJ 题解 \[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_ ...

  6. ●BZOJ 3309 DZY Loves Math

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...

  7. [BZOJ3561] DZY Loves Math VI

    (14.10.28改) 本来只想写BZOJ3739:DZY Loves Math VIII的,不过因为和VI有关系,而且也没别人写过VI的题解,那么写下. 不过我还不会插公式…… http://www ...

  8. BZOJ 3309: DZY Loves Math

    3309: DZY Loves Math Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 761  Solved: 401[Submit][Status ...

  9. BZOJ 3512: DZY Loves Math IV [杜教筛]

    3512: DZY Loves Math IV 题意:求\(\sum_{i=1}^n \sum_{j=1}^m \varphi(ij)\),\(n \le 10^5, m \le 10^9\) n较小 ...

随机推荐

  1. alpha-咸鱼冲刺day2-紫仪

    总汇链接 一,合照 emmmmm.自然是没有的. 二,项目燃尽图 三,项目进展 今天并没有什么进展,弄了好久好像也只研究出怎么把JS的功能块插入进去.html的信息提交这些还不知道要怎么弄. 四,问题 ...

  2. 201621123062《java程序设计》第11周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 思维导图: 2. 书面作业 本次PTA作业题集多线程 2.1. 源代码阅读:多线程程序BounceThread 2 ...

  3. 在ArcGIS中导出现有mxd的style文件

     做好的地图包含许多地图符号,这是之前花了很多功夫做的,怎么把它导出来再用呢?     在ArcGIS中右键工具栏,customize,选择command选项卡,在搜索框中输入style ,选择too ...

  4. nyoj 星期几?

    星期几? 时间限制:500 ms  |  内存限制:65535 KB 难度:2   描述                      Acmer 小鱼儿 埋头ku算一道题 条件:已知给定 一日期 告诉你 ...

  5. 外网访问本地服务器下的web应用

    让本地服务器可以在外网访问的方式有很多,介绍其中一种: 由于本人是在自己电脑上装了一个虚拟机, 测试环境为:虚拟机作为服务器,服务器中装了一个禅道,虚拟机IP192.168.2.221,本人通过tpl ...

  6. C# 使用 ffmpeg 进行音频转码

    先放一下 ffmpeg 的官方文档以及下载地址: 官方文档:http://ffmpeg.org/ffmpeg.html 下载地址:http://ffmpeg.org/download.html 用 f ...

  7. 如何深入系统的学习一门编程语言——python自学笔记

    前言 最早接触python的时候,他并没有现在这么火,我也没把他太当回事,那时候我对python的印象就是给运维人员使用的一门很古老的语言,显然随着tensorflow(以下简称tf)的兴起,pyth ...

  8. Netty事件监听和处理(下)

    上一篇 介绍了事件监听.责任链模型.socket接口和IO模型.线程模型等基本概念,以及Netty的整体结构,这篇就来说下Netty三大核心模块之一:事件监听和处理. 前面提到,Netty是一个NIO ...

  9. Linux知识积累 (9) 创建用户、分配权限和更改所有者

    一.useradd和adduser 1.useradd命令: 用于Linux中创建的新的系统用户. useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码. 而可用userde ...

  10. python爬虫requests json与字典对象互相转换

    import requests import json ''' json.loads(json_str) json字符串转换成字典 json.dumps(dict) 字典转换成json字符串 ''' ...