求助:关于一个奇怪的程序
查看原帖
求助:关于一个奇怪的程序
359430
江户川コナン楼主2022/2/14 12:18

程序如下:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5+5;
const int mod=5000011;
int n,k,fact[maxn];
int quick_pow(int a,int b){
    int ans=1;
    while(b!=0){
        if(b&1) ans=ans*a%mod;
        b/=2;
        a=a*a%mod;
    }
    return ans;
}
int Inv(int b){
    return quick_pow(b,mod-2);
}
int c(int a,int b){
    //int x=Inv(b);
    b=fact[b]*fact[a-b]%mod;
    a=fact[a];
    int x=Inv(b);
    return a*x%mod;
    //int x=Inv(b);
}
signed main(){
    fact[0]=1;
    for(int i=1;i<maxn;i++){
        fact[i]=fact[i-1]*i%mod;
    }
    cin>>n>>k;
    int ans=n+1;
    //cout<<ans<<endl;
    for(int i=2;i<n-k;i++){
        int x=n-i+1-(i-1)*k+1;
            //cout<<ans<<endl;
        ans=(ans+c(x,i))%mod;
            
    }
    ans++;
    cout<<ans<<endl;
    return 0;
}

我运行了3次这个程序,每次都往里面输入数据15 2

结果:

第一次:751898

第二次:1387814

第三次:2764926

好家伙!同样的输入,每次输出竟然都不一样!这个程序里也没用随机数啊?

求助:请问这是怎么回事?

2022/2/14 12:18
加载中...