zoukankan      html  css  js  c++  java
  • CF1359E Modular Stability(思维+逆元)

    首先想到如果将mod的顺序变化了一下,如果答案肯定不变,那么所有数必须要是最小的数的倍数。并且题目已知数列递增。

    这是因为如果模数没有倍数关系,这就会破坏模的数据,可以通过在纸上举例子得出

    因此本题答案只跟最小的数有关,枚举最小的数,之后就是在倍数中取k-1个,根据逆元组合数预处理得解

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=6e5+10;
    const int mod=998244353;
    int n,k;
    ll infact[N];
    ll fact[N];
    ll qmi(ll a,ll b){
        ll res=1;
        while(b){
            if(b&1){
                res=res*a%mod;
            }
            a=a*a%mod;
            b>>=1;
        }
        return res;
    }
    void init(){
        int i;
        fact[1]=fact[0]=1;
        for(i=2;i<=n;i++){
            fact[i]=fact[i-1]*i%mod;
        }
        infact[1]=1;
        infact[0]=1;
        for(i=2;i<=n;i++){
            infact[i]=infact[i-1]*qmi(i,mod-2)%mod;
        }
    }
    int main(){
        cin>>n>>k;
        init();
        int i;
        ll res=0;
        for(i=1;i<=n;i++){
            if(n/i-1<k-1)
                break;
            res=(res+(ll)fact[n/i-1]*infact[k-1]%mod*infact[n/i-k]%mod)%mod;
        }
        cout<<res<<endl;
    }
    View Code
  • 相关阅读:
    MFC自绘框架窗口客户区
    命令行下创建mysql数据库
    linux重置mysql root密码的6种方
    xampp修改mysql默认密码详解
    Java常用包装类
    Java异常处理
    Java数组
    Java流程控制
    Java基本数据类型
    golang https server分析
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13219144.html
Copyright © 2011-2022 走看看