HDU-4059 The Boss on Mars(反演)


HDU-4059 The Boss on Mars







#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
const int inv=233333335;
typedef long long ll;
ll f(ll n){
    ll ans=n*(n+1)%mod*(2LL*n+1)%mod;
    ll x=(3LL*n*n%mod+3LL*n-1)%mod*inv%mod;
    return ans*x%mod;
}
int mu(ll n){
    if(n==1)return 1;
    int cnt=0;
    for(int i=2;1LL*i*i<=n;i++){
        if(n%i==0){
            cnt++;
            n/=i;
            if(n%i==0)return 0;
        }
    }
    if(n>1)cnt++;
    return cnt%2==1?-1:1;
}
ll cal(ll n,ll d){
    ll res=d*d%mod;
    res=res*res%mod;
    ll ans=f(n/d)*res%mod*mu(d);
    ans=(ans+mod)%mod;
    return ans;
}
int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        scanf("%d",&n);
        ll ans=0;
        for(int i=1;1LL*i*i<=n;i++){
            if(n%i==0){
                ans+=cal(n,i);
                if(ans>=mod)ans-=ans/mod*mod;
                if(i!=n/i)ans+=cal(n,n/i);            
                if(ans>=mod)ans-=ans/mod*mod;
            }
        }
        printf("%lld\n",ans);
    }    
}

全部评论

相关推荐

09-29 17:44
已编辑
蔚来_测(准入职员工)
//鲨鱼辣椒:见不了了我实习了四个月上周再投筛选了一天就给我挂了
点赞 评论 收藏
分享
09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 75人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务