[BZOJ2005][Noi2010]能量采集

原题地址

网上题解太高端OLZ…
自(luan)己(gao)想(gao)出了一个做法,具体看代码囧…
关于该做法时间复杂度的分析…

拓展一个调和数列近似公式(别问我是什么我也不知道OLZ):

当n很大时

ni=11ilnn+γ

(γEuler,γ0.57)

AC code:

#include <cstdio>
typedef long long ll;
const ll N=100010;
ll n,m,ans;
ll f[N];

int main(){
    scanf("%lld%lld",&n,&m);
    if(n>m){ll t=n;n=m;m=t;}
    f[n]=m/n;
    for(ll i=n-1;i>=1;i--){
        f[i]=(n/i)*(m/i);
        for(ll j=2;i*j<=n;j++) f[i]-=f[i*j];
    }
    for(ll i=1;i<=n;i++) ans+=(f[i]*(i-1))<<1;
    ans+=n*m;
    printf("%lld",ans);

    return 0;
}
发布了168 篇原创文章 · 获赞 5 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览