[BZOJ3561] DZY Loves Math VI
(14.10.28改)
本来只想写BZOJ3739:DZY Loves Math VIII的,不过因为和VI有关系,而且也没别人写过VI的题解,那么写下。
不过我还不会插公式……
http://www.lydsy.com/JudgeOnline/problem.php?id=3561
想想还是要把代码放一下的,不然可能一辈子都不会写了= =
为什么那么像FancyCoder写的呢……因为这题本来就是他教我哒……读入优化快速筛甚至快速幂的模板都是他的= =
额Mobius反演系列问题的入门也是看Jcvb大爷blog学的……
= =
简要说下,设F(d,k)为正整数d次幂的前K项和。
然后化成∑(D=1...n)∑(d|D)d^d*μ(D/d)*F(d,n/d)*F(d,m/d)……
发现能预处理出F(d,n/d)和F(d,m/d)就好了……
然后我对杜教多项式求和的课件进行了艰苦卓绝的复习(学习)……当然失败了。
最后看Fancy代码……
暴力!
居然是暴力!
妈蛋……
简要的说……就是裸的不能裸暴力啊泥煤,预处理时间复杂度O(∑(n/d))=O(nlogn)。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using
namespace
std;
#define rep(i,j,n) for(i=j;i<=n;i++)
template
<
class
T>
inline
void
read(T&x){
char
c;
for
(c=
getchar
();c<
'0'
||c>
'9'
;c=
getchar
());
for
(x=0;c>=
'0'
&&c<=
'9'
;c=
getchar
())x=x*10+c-
'0'
;};
typedef
long
long
ll;
const
int
N=500000;
const
int
mod=1000000007;
ll i,j,k,l,tt,d2,res,ans,d;
int
P,Q,n,m;
ll s[N+10],t[N+10];
ll
pow
(ll a){ll ans=1,b=a;
for
(a%=mod;b;b>>=1,a=a*a%mod)
if
(b&1)ans=ans*a%mod;
return
ans;}
bool
pd[N+1];
int
u[N+1],p[N/5+1];
void
pre(){
pd[1]=1;u[1]=1;
rep(i,2,N){
if
(!pd[i]){p[++p[0]]=i;u[i]=-1;}
for
(
int
j=1,mul;j<=p[0]&&(mul=i*p[j])<=N;j++){
pd[mul]=1;
if
(i%p[j]==0){u[mul]=0;
break
;}
u[mul]=-u[i];
}
}
}
int
main()
{
read(n);read(m);
if
(n>m)swap(n,m);
pre();
rep(i,1,m)t[i]=1;
rep(d,1,n){
Q=m/d;
rep(i,1,Q)t[i]=t[i]*i%mod;
rep(i,1,Q)s[i]=(s[i-1]+t[i])%mod;
res=0;P=n/d;
rep(d2,1,P)
if
(u[d2]){
tt=t[d2]*t[d2]%mod*s[P/d2]%mod*s[Q/d2]%mod;
res+=tt*u[d2];
}
res%=mod;
ans=(ans+res*
pow
(d))%mod;
}
printf
(
"%lld\n"
,ans);
return
0;
}
[BZOJ3561] DZY Loves Math VI的更多相关文章
- BZOJ3561 DZY Loves Math VI 数论 快速幂 莫比乌斯反演
原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目 ...
- BZOJ3561 DZY Loves Math VI 莫比乌斯反演
传送门 看到\(gcd\)相关先推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^M (lcm(i ...
- BZOJ3561 DZY Loves Math VI 【莫比乌斯反演】
题目 给定正整数n,m.求 输入格式 一行两个整数n,m. 输出格式 一个整数,为答案模1000000007后的值. 输入样例 5 4 输出样例 424 提示 数据规模: 1<=n,m<= ...
- 【BZOJ3561】DZY Loves Math VI (数论)
[BZOJ3561]DZY Loves Math VI (数论) 题面 BZOJ 题解 \[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^m\sum_ ...
- 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 ...
- 【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 ...
- 【bzoj3561】DZY Loves Math VI 莫比乌斯反演
题目描述 给定正整数n,m.求 输入 一行两个整数n,m. 输出 一个整数,为答案模1000000007后的值. 样例输入 5 4 样例输出 424 题解 莫比乌斯反演 (为了方便,以下公式默认$ ...
- 【BZOJ】3561: DZY Loves Math VI
题意 求\(\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)^{gcd(i, j)}\)(\(n, m<=500000\)) 分析 很显然要死推莫比乌斯 题解 设\ ...
- ●BZOJ 3561 DZY Loves Math VI
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3561 题解: 莫比乌斯反演 $$\begin{aligned}ANS&=\sum_{ ...
随机推荐
- table 西边框样式
table { border-collapse: collapse; border: none; width: 200p ...
- sersync做实时同步(第一步)
两台主机,一台主服务器(192.168.0.109).一台目标服务器(192.168.0.212) 1.配置目标服务器(192.168.0.212);就是配置rsync服务器.在配置文件/etc/rs ...
- START WITH CONNECT BY PRIOR 链表查询
使用场景:排序 设计思路,id为主键,index为顺序,index存前一个节点的id,当然,按照这个思路可以实现双向链表的(preindex存前一个节点,nextindex存下一个节点) 这样的话排序 ...
- Centos7 wget和普通下载有区别
今天下的禅道 wget和用win下载之后再ssh传过去,效果不一样 wget不能正常启动禅道.回来要探讨一下wget的不同之处,先记下来
- Linux查看一个文件夹大小
1.Linux查看一个文件夹大小: du -sh /home/yangkun [yangkun@sg1 bin]$ du -sh /home/yangkun/ 164M /home/yangkun/ ...
- Top 100 words for advanced learners.
aberration (n.) something that differs from the norm (In 1974, Poland won the World Cup, but the suc ...
- 关于c语言不定参数的研究
一. 学习过程 编写程序如下: 编译连接并用debug加载,观察main函数的内容: Showchar函数的内容: 观察发现,main函数要传递两个参数‘a’和2,在汇编代码中是先将2赋给ax,再将a ...
- MFC中DoDataExchange()的作用
void CDlgSelectCS::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Te ...
- HDOJ(HDU) 1570 A C
Problem Description Are you excited when you see the title "AC" ? If the answer is YES , A ...
- Android新浪微博客户端(一)——主框架搭建
原文出自:方杰| http://fangjie.info/?p=62 转载请注明出处 提前声明的是,我是按照Ivan的这套教程学下来的. 首先,对于任何应用我们都需要建立一套消息处理机制,就是当用户在 ...