zoukankan      html  css  js  c++  java
  • BZOJ3561

    Portal

    Description

    (T(Tleq3))组测试数据。给出(n,m(nleq5 imes10^5)),求

    [sum_{i=1}^n sum_{j=1}^m lcm(i,j)^{gcd(i,j)} ]

    Solution

    喜闻乐见推推推。

    [egin{align*} ans &= sum_{i=1}^n sum_{j=1}^m lcm(i,j)^{gcd(i,j)} \ &= sum_{d=1}^{+∞} sum_{i=1}^n sum_{j=1}^m [gcd(i,j)=d](frac{ij}{d})^d \ &= sum_{d=1}^{+∞} sum_{i=1}^{⌊frac{n}{d}⌋} sum_{j=1}^{⌊frac{m}{d}⌋} [gcd(i,j)=1](ijd)^d \ &= sum_{d=1}^{+∞} d^d sum_{d_1=1}^{+∞}mu(d_1) sum_{d_1|i}^{⌊frac{n}{d}⌋} sum_{d_1|j}^{⌊frac{m}{d}⌋} (ij)^d \ &= sum_{d=1}^{+∞} d^d sum_{d_1=1}^{+∞}mu(d_1) sum_{i=1}^{⌊frac{n}{dd_1}⌋} sum_{j=1}^{⌊frac{m}{dd_1}⌋} (id_1cdot jd_1)^d \ &= sum_{d=1}^{+∞} d^d sum_{d_1=1}^{+∞}mu(d_1)d_1^{2d} sum_{i=1}^{⌊frac{n}{dd_1}⌋} i^dsum_{j=1}^{⌊frac{m}{dd_1}⌋} j^d \ end{align*}$$ 于是我们枚举$d$,预处理出$f(x)=sum_{i=1}^x i^d$,然后枚举$d_1$。 >根据调和级数总复杂度为$O(nlogn)$。 ##Code ```cpp //DZY Loves Math VI #include <algorithm> #include <cstdio> using std::swap; typedef long long lint; const int N=5e5+10; const int P=1e9+7; int prCnt,pr[N]; bool prNot[N]; int mu[N]; void init(int n) { mu[1]=1; for(int i=2;i<=n;i++) { if(!prNot[i]) pr[++prCnt]=i,mu[i]=-1; for(int j=1;j<=prCnt;j++) { int x=i*pr[j]; if(x>n) break; prNot[x]=true; if(i%pr[j]) mu[x]=-mu[i]; else break; } } } int powD[N],S[N]; int pow(int x,int y) { lint r=1,t=x; for(int i=y;i;i>>=1,t=(t*t)%P) if(i&1) r=(r*t)%P; return r; } int main() { int task=1; init(5e5); while(task--) { int n,m; scanf("%d%d",&n,&m); if(n>m) swap(n,m); int ans=0; for(int i=1;i<=m;i++) powD[i]=1; for(int d=1;d<=n;d++) { int k1=n/d,k2=m/d,ansD=0; for(int i=1;i<=k2;i++) powD[i]=(1LL*powD[i]*i)%P; for(int i=1;i<=k2;i++) S[i]=(S[i-1]+powD[i])%P; for(int d1=1;d1<=k1;d1++) { lint t=1LL*(mu[d1]+P)%P*powD[d1]%P*powD[d1]%P; t=t*S[k1/d1]%P*S[k2/d1]%P; ansD=(ansD+t)%P; } ans=(ans+1LL*ansD*pow(d,d))%P; } printf("%d ",ans); } return 0; } ```]

  • 相关阅读:
    echarts实现中国地图(部分省份版)
    Head First 设计模式——与设计模式相处
    Head First 设计模式-复合模式
    Head First 设计模式-状态、代理模式
    Head First 设计模式-模板方法、迭代器
    魔幻的一个月~
    Head First 设计模式-命令与适配器模式
    突然想写点什么……
    Head First 设计模式- 工厂与单件模式
    Head First 设计模式——观察者与装饰者模式
  • 原文地址:https://www.cnblogs.com/VisJiao/p/BZOJ3561.html
Copyright © 2011-2022 走看看