2017.9.5 能量采集 思考记录

来源:互联网 发布:environ linux 编辑:程序博客网 时间:2024/06/05 05:05

第一个自己搞出来的反演题、

相比于上一个题,这个题简直和善

直接反演搞,最后一步还不用化简、、

这题放到现在出估计全场都A了

和bzoj3309相比,它只是第一步、



而正解是phi、、




码:

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define N 100005#define ll long longll n,m,ans,mu[N],su[N],tot,i,j,k,f[N];bool he[N];void eular(int n){mu[1]=1;for(i=2;i<=n;i++){if(!he[i]){su[++tot]=i;mu[i]=-1;}for(j=1;j<=tot&&su[j]*i<=n;j++){             he[i*su[j]]=1;             if(i%su[j]==0) { mu[i*su[j]]=0; break; }else { mu[i*su[j]]=-mu[i]; }}}}int main(){scanf("%lld%lld",&n,&m);if(n>m)swap(n,m);eular(n);for(i=1;i<=n;i++){for(j=i;j<=n;j+=i){f[j]+=mu[j/i]*((i-1)*2+1);}}for(i=1;i<=n;i++){ans+=f[i]*(m/i)*(n/i);}printf("%lld",ans);} 


原创粉丝点击