题解 | #前缀平方和序列#

前缀平方和序列

https://www.nowcoder.com/practice/5a4a7feaa70e45f1ad69ac86f0e4b246

前缀和必须是平方数,所以其实就是从 里按顺序挑 个,当作每一步前缀和,能挑多少种就是答案。

void solve(){
    int n,x;cin>>n>>x;
    int m=(int)sqrt((double)x);
    while((ll)(m+1)*(m+1)<=x)++m;
    while((ll)m*m>x)--m;
    if(m<n){
        cout<<0<<endl;
        return;
    }
    vll f(m+1);
    f[0]=1;
    for(int i=1;i<=m;++i){
        f[i]=f[i-1]*i%MOD;
    }
    vll inv(m+1);
    inv[m]=qpow(f[m],MOD-2);
    for(int i=m;i>0;--i){
        inv[i-1]=inv[i]*i%MOD;
    }
    ll ans=f[m]*inv[n]%MOD*inv[m-n]%MOD;
    cout<<ans<<endl;
}
全部评论

相关推荐

点赞 评论 收藏
分享
05-04 17:20
武汉大学
已注销:技术栈删了,让ai把你的项目丰富化,干的活太少了,像是写了个demo,起码一个项目四点重要内容,内容用技术栈描述,取得了什么进展,简历大部分都留给项目,其他的压缩
如何写一份好简历
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务