2020江西ICPC省赛 A.Simple Math Problem(莫比乌斯反演)

A Simple Math Problem

https://ac.nowcoder.com/acm/contest/8827/A

题目链接



在这里插入图片描述








#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll F[N];
int mu[N];
int Log(int n){
    int ans=0;
    while(n)ans+=n%10,n/=10;
    return ans;
}
void pre(){
    mu[1]=1;
    for(int i=1;i<N;i++){
        F[i]=Log(i);
        if (mu[i]){
            for(int j=2*i;j<N;j+=i){
                mu[j]-=mu[i];
            }
        }
    }
}
int main(){
    pre();
    int n;scanf("%d",&n);
    ll ans=0;
    for(int d=1;d<=n;d++){
        if(mu[d]){
            ll m=n/d,s=0;
            for(int i=d;i<=n;i+=d){
                s+=1LL*F[i]*m;
                m--;
            }
            ans+=s*mu[d];
        }
    }
    printf("%lld\n",ans);
}

全部评论
qp大佬太强了!
点赞 回复 分享
发布于 2020-11-20 11:01
ml大佬 强 😁
点赞 回复 分享
发布于 2020-11-20 11:19

相关推荐

牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务