原題為:

對于第二問,經過演算得到答案為pow(e,-1/k),下面用程序驗證一下(k=1)的情況,n從1到20
#include<iostream>
using namespace std;

#define e 2.718281828459
double g(double k)


{

return pow(e,-1.0/k);
}

#define bint __int64

bint f(bint n)


{
if(n==1||n==0) return 1;

else return n*f(n-1);
}

bint Com(bint n,bint k)


{
return f(n)/f(n-k)/f(k);
}
bint process(bint n,bint k)


{
bint ans = f(n);
for(int i=1;i<=n/k;i++)

{
bint tem = 1;
for(int j=1;j<=i;j++)
tem *= Com(n-k*j+k,k)*f(k-1);
tem *= f(n-i*k);
tem /= f(i);
if(i&1)ans -= tem;
else ans += tem;
}
return ans;
}

int main()


{
bint n,k;

for(int i=1;i<=20;i++)

{
//printf("fk(n)為:%.20lf\n",(double)process(n,k));
printf("當n=%02d時,fk(n)/n!為:%.20lf\n",i,(double)process(i,1)/f(i));

}
printf("pow(e,-1/k)為: %.20lf\n",g(1));


return 0;
}測試結果如下圖:

可見當k=1,n從1-20變化時,fk(n)/n!逼近pow(e,-1/k);