質問A:[向上数学Bullcow牛と牛の組み合わせにより

この質問は明白な組み合わせの数の対象であるが、訪問回数の組み合わせは非常に柔軟性があり、インターネットがより明確に話すにブログを持っています

//此题还是比较灵活,对于组合数模型的转化最为重要 
#include<stdc++.h>
using namespace std;
int n,k;
long long mod=5000011;
long long ksm(long long a,long long b){
    long long base=1;
    while(b){
        if(b&1) base=base*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return base;
}
long long C(long long n,long long m){
    if(m>n) return 0;
    long long a=1,b=1;
    for(long long i=n-m+1;i<=n;i++){
        a=a*i%mod;
    } 
    for(long long i=1;i<=m;i++){
        b=b*i%mod;
    }
    return a*ksm(b,mod-2)%mod;
} 
long long Lucas(long long n,long long m){
    if(!m) return 1;
    else return (C(n%mod,m%mod)*Lucas(n/mod,m/mod))%mod;
} 
long long ans;
int num;
int main(){
    scanf("%d%d",&n,&k);
    ans=1;//牡牛一个也没有 
    for(int i=1;i<=n;i++){//枚举牡牛的数量 
        num=n-(i-1)*k;
        if(i>num) break;
        ans=(ans+Lucas(num,i))%mod;//累加答案 
    }
    printf("%lld\n",ans);
    return 0;
} 

 

おすすめ

転載: www.cnblogs.com/LJB666/p/11010027.html