程序如下:
#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
好家伙!同样的输入,每次输出竟然都不一样!这个程序里也没用随机数啊?
求助:请问这是怎么回事?