HDU-6868 多校(莫比乌斯反演)



图片说明



图片说明


#include<bits/stdc++.h>
using namespace std;
#define me(a,x) memset(a,x,sizeof(a))
#define sc scanf
#define pr printf
#define IN freopen("in.txt","r",stdin);
#define OUT freopen("out.txt","w",stdout);
typedef long long ll;
typedef unsigned long long ull;
const int N=1e7+6;
const int mod=1e9+7;
const int inv2=mod+1>>1;
int O(){putchar('\n');return 0;}template<typename T,typename... Ty>
int O(const T& a,const Ty&... b){cout<<a<<' ';return O(b...);}
void I(){}template<typename T,typename... Ty>void I(T& a,Ty&... b){cin>>a;I(b...);}
template<typename T>void db(T *bg,T *ed){while(bg!=ed)cout<<*bg++<<' ';pr("\n");}
inline ll mul_64(ll x,ll y,ll c){return (x*y-(ll)((long double)x/c*y)*c+c)%c;}
inline ll ksm(ll a,ll b,ll c){ll ans=1;for(;b;b>>=1,a=a*a%c)if(b&1)ans=ans*a%c;return ans;}
const int _inv=mod-(mod+1>>1);
int g[N],f[N],pri[N],sum[N];
bool vis[N];
int cnt=0;
void pre(){
    g[1]=1;f[1]=0;
    for(int i=2;i<N;i++){
        if(!vis[i]){
            pri[++cnt]=i;
            g[i]=_inv;
            f[i]=1;
        }
        for(int j=1;j<=cnt&&i*pri[j]<N;j++){
            vis[i*pri[j]]=1;
            if(i%pri[j]==0){
                f[i*pri[j]]=f[i];
                g[i*pri[j]]=0;
                break;
            }
            f[i*pri[j]]=f[i]+1;
            g[i*pri[j]]=1LL*g[i]*_inv%mod;
        }
    }
    for(int i=1;i<N;i++){
        f[i]=1<<f[i];
        sum[i]=(1LL*sum[i-1]+f[i])%mod;
    }
}
ll F(int m,int n){
    if(m==0)return 0;
    if(m==1)return f[n];
    if(n==1)return sum[m];
    ll ans=0;
    for(int d=1;d*d<=n;d++){
        if(n%d==0){
            if(g[d]){
                ans+=F(m/d,d)*g[d]%mod;
            }
            if(d*d!=n&&g[n/d]){
                int x=n/d;
                ans+=F(m/x,x)*g[x]%mod;
            }
            if(ans>=mod)ans%=mod;
        }
    }
    ans=ans*f[n]%mod;
    return ans;
}
int main(){
    pre();
    int t;cin>>t;
    while (t--)
    {
        int n,m;
        sc("%d%d",&n,&m);
        pr("%lld\n",F(m,n));
    }
}
全部评论

相关推荐

野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
hanliu:1. 排版与格式问题字体与对齐问题:标题和内容的字体大小差异不够明显,无法迅速吸引目光。某些文字看起来有些拥挤(比如校园经历中的“班委成员”部分)。2. 内容逻辑性模块顺序问题:实习经历放在较靠后的位置,实际上这部分内容对应聘来说更重要,建议提前突出。细节表述不够突出:比如教育背景部分的专业课程仅仅列出名字,没有说明自己在这些课程中表现如何或者掌握了什么技能,缺乏量化描述。多余内容:例如“班委成员”和“宣传委员”这类校园经历,叙述过于普通,缺乏和岗位相关的实质性贡献。,建议简写。3. 措辞专业性表达不够精准:例如“协助班长与团支书更好地为同学服务”显得较为笼统,没有实际成果的体现。用词重复:如“学习了焊接”“学习了光检”等重复词语较多,缺乏丰富的动词来展示个人能力(如“负责”“优化”“改进”等)。技能展示不足:虽然列出了UG和CAD证书,但没有明确提到这些技能如何在实际工作中发挥作用。4. 技能匹配度技能深度不足:虽然列出了掌握的软件和技术,但没有描述技能水平(如“熟练掌握”“精通”),也没有具体案例支持这些技能。缺乏岗位导向性:比如针对机械设计与制造方向,实习经历提到了“E6尾灯项目”,但没有详细说明自己在其中的技术贡献,可能会显得经验描述泛泛而谈。5. 自我评价问题表达空泛:如“具有良好的沟通协调能力”“责任心强”之类的描述太常见,没有让人眼前一亮的特点。缺乏成果支持:自我评价中的能力没有用具体项目、经历或成就来验证,可信度较弱。 兄弟加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务