题意:求$\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)^{gcd(i,j)}$

神仙题...

首先可能会想到一个转化,就是$lcm(i,j)=\frac{ij}{gcd(i,j)}$

然后大力往下推式子,发现你推不下去了...

因为$d$在分母上!!!

然后我们考虑换一种推法:如果我们对$ij$同时除掉$gcd(i,j)$,这样的话问题就可以转化成这个样子:

$\sum_{d=1}^{n}\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}[gcd(i,j)\equiv 1](ijd)^{d}$

然后把$d$拿出来,维护一下后面那坨,有:

$\sum_{d=1}^{n}d^{d}\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}\sum_{t|gcd(i,j)}\mu(t)(ij)^{d}$

改变一下枚举顺序,得到:

$\sum_{d=1}^{n}d^{d}\sum_{t=1}^{\frac{n}{d}}\mu(t)\sum_{i=1}^{\frac{n}{dt}}\sum_{j=1}^{\frac{m}{dt}}(ijt^{2})^{d}$

(也就是在后面的$ij$乘积这一项中单独考虑$t$的贡献)

然后再整理,就得到:

$\sum_{d=1}^{n}d^{d}\sum_{t=1}^{\frac{n}{d}}\mu(t)t^{2d}\sum_{i=1}^{\frac{n}{dt}}i^{d}\sum_{j=1}^{\frac{m}{dt}}j^{d}$

然后我们就暴力计算即可,每次计算时都要先预处理出$[1,\frac{n}{d}]$的$i^{d}$的前缀和,再暴力查询即可,时间复杂度为调和级数$O(nlnn)$

注意每次求幂可以递推,不要快速幂!!!会退化成$O(nlog_{2}^{2}n)$!

代码:

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#define ll long long
using namespace std;
const ll mode=1000000007;
int pri[5000005],mu[5000005],used[5000005];
ll S[5000005],mi[5000005];
int cnt=0;
ll pow_mul(ll x,ll y)
{
ll ret=1;
while(y)
{
if(y&1)ret=ret*x%mode;
x=x*x%mode,y>>=1;
}
return ret;
}
void init()
{
mu[1]=1;
for(int i=2;i<=5000000;i++)
{
if(!used[i])pri[++cnt]=i,mu[i]=-1;
for(int j=1;j<=cnt&&i*pri[j]<=5000000;j++)
{
used[i*pri[j]]=1;
if(i%pri[j]==0){mu[i*pri[j]]=0;break;}
mu[i*pri[j]]=-mu[i];
}
}
}
int main()
{
init();
ll n,m;
scanf("%lld%lld",&n,&m);
if(n>m)swap(n,m);
ll ans=0;
for(int i=1;i<=m;i++)mi[i]=1;
for(int i=1;i<=n;i++)
{
ll s=pow_mul(i,i);
S[0]=0;
for(int j=1;j<=m/i;j++)mi[j]=mi[j]*j%mode,S[j]=(S[j-1]+mi[j])%mode;
ll tempc=0;
for(int j=1;j<=n/i;j++)
{
ll temps=(mu[j]*mi[j]*mi[j]%mode+mode)%mode;
tempc=(tempc+temps*S[n/i/j]%mode*S[m/i/j]%mode)%mode;
}
ans=(ans+s*tempc)%mode;
}
printf("%lld\n",ans);
return 0;
}

bzoj 3561的更多相关文章

  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

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3561 题解: 莫比乌斯反演 $$\begin{aligned}ANS&=\sum_{ ...

  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

    题目: 给定正整数n,m.求   题解: 水题有益身心健康.(博客园的辣鸡数学公式) 其实到这我想强上伯努利数,然后发现$n^2$的伯努利数,emmmmmm 发现这个式子可以算时间复杂度,emmmmm ...

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

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

  6. DZY Loves Math 系列详细题解

    BZOJ 3309: DZY Loves Math I 题意 \(f(n)\) 为 \(n\) 幂指数的最大值. \[ \sum_{i = 1}^{a} \sum_{j = 1}^{b} f(\gcd ...

  7. 【BZOJ】3561: DZY Loves Math VI

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

  8. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  9. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  10. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

随机推荐

  1. lua如何转化为exe

    在这里下载    https://wwn.lanzout.com/iIS9d07rpesh 然后用cmd到 下载的盘:\luapack\luapack\bin\Debug 然后glue.exe srl ...

  2. 20203412马畅若 实验三 《Python程序设计》Socket编程技术实验报告

    实验三 Socket编程技术 课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2020年5月30日必修/选修: 公选课 ##1. ...

  3. Windows 11安装etcd

    一.从官方网站找到Windows版的安装包下载 https://etcd.io/ 把etcd的压缩包解压到D:/soft/etcd文件夹下,首先运行etcd.exe,这是启动etcd服务的,接着就可以 ...

  4. 算法学习—————PAM回文自动机

    时隔一年,第一次学习新的算法 原理和AC自动机差不多 基本思想: 两棵树分别代表奇偶 在一个回文串两边同时填上相同字符可以得到另一个回文串,以此构建两棵树 树上维护信息: 节点表示的回文串为当前位置的 ...

  5. 常见的Native Crash类型,bug解决记录

    APP调用Native的jar包接口出现闪退,仅仅settings应用,其他应用调用该包接口正常使用. 猜测1. jar包为64为,settings程序为32位,版本兼容性问题.(经验证,原因确实如此 ...

  6. class_schedule

    #!/usr/bin/python # -*- coding: UTF-8 -*- class Schedule(object):          def __init__(self, name=& ...

  7. IaaS--云虚拟机(二)(何恺铎《深入浅出云计算》笔记整理)

    [如何挑选合适的虚拟机型号] 1.根据类型.云厂商会提供均衡型.计算密集型.内存优化型.图形计算型等常见的虚拟机类型.这些类型对应着硬件资源的某种合理配比或针对性强化,方便你在面向不同场景时,选择最合 ...

  8. 遇到bug怎么分析,这篇文章值得一看

    博主总结的非常到位:https://mp.weixin.qq.com/s/UpaLWjix2tnfTqybx9dmoQ 为什么定位问题如此重要? 可以明确一个问题是不是真的"bug" ...

  9. oracle 分配权限命令

    Oracle分配权限 以管理员身份登录数据库 创建用户:create user [username] identified by [password]; 赋予登录权限:grant create ses ...

  10. 戴尔n4110在win7下无法使用virtualbox的解决方法(应该对win7都有用)

    正文 因为已经学了一段时间的汇编了嘛,想着就拿单独一台机器出来学汇编好了,刚好趁着天气降温回学校拿被子的机会把笔记本也拿出来了,然后我装上了virtual box,把编译好的文件写到虚拟盘中,打开就直 ...