题意:求$\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. uniapp 小程序自定义组件样式穿透问题

    1.正在开发时发现自定义组件间样式发生穿透问题 2.主需要引入下面代码可解决 export default { options: { //默认值 isolated(启动隔离) //apply-shar ...

  2. 【离线数仓】数据仓库DW图解

    整体框架 技术选型 数据流程图

  3. WPF BackSpace 回退到上一个页面

    在Wpf程序中,有时候点击到某些控件后,再按下[BackSpace]键,画面会回到上一个 TextBox可能自己处理了,所以没有这一个现象. 解决方案是: 在App.xaml.cs 的 Initial ...

  4. 数据库可视化---grafana的简单使用

    简介 grafana可以连接各种数据源, 并通过给定的SQL语句做数据的定时统计和web大屏展示,也可以对外提供API进行展示, 类似这样 内含多种不同类型图表, 可以涵盖很多种监控需求, 报表可视化 ...

  5. SQL命令--合并查询union

    union命令作用:连接两个以上的 SELECT 语句的结果组合到一个表中 一. 示例: select id, url, auth_status as authStatus, enterprise_n ...

  6. One-Shot Transfer Learning of Physics-Informed Neural Networks

    本文提出了一种将迁移学习应用到PINN的方法.可以极大的缩短训练PINN所用的时间,目前,PINN所需要的训练次数往往都在成千上万次, 作者通过批量训练PINN,来学习丰富的潜在空间用来执行迁移学习. ...

  7. django验证码模块django-simple-captcha的使用介绍

    django-simple-captcha是django验证码模块,非常方便易用. 1.环境的准备: 在django项目环境中安装:pip install django-simple-captcha ...

  8. 本地启动https服务器

    如果是vue-cli3项目,直接在vue.config.js中设置如下即可: devServer: { https: true } 如果是express项目,则根据这篇文章来操作即可:https:// ...

  9. KEIL5中C/C++优化等级问题

    知乎上有篇详解   https://zhuanlan.zhihu.com/p/24402180 强烈推荐 C/C++的优化等级会对程序产生 不定性的影响,至于选择哪种优化等级必须从 现有的程序分析才行 ...

  10. 洛谷P4342 [IOI1998]Polygon

    题目 https://www.luogu.com.cn/problem/P4342 我会做IOI题辣 思路 算法设计与分析的课堂例题. 首先这是一个环状DP,那么根据老套路,破环成链.发现要求的东西也 ...