今天早上由于卡特兰数太大是不会求。。
取膜的数也很大,用卢卡斯也不好做
于是就想有没有更快的求阶乘
偶然间发现了这个
由于知识水平不够,于是没看懂证明。。
但结论还是看懂了
不想贴图,https://baike.baidu.com/item/%E6%96%AF%E7%89%B9%E6%9E%97%E5%85%AC%E5%BC%8F/9583086?fr=aladdin
然后我试着写了一发。。发现近似是挺近似的,但在5的时候误差就大于1了。。
这样根本就求不出卡特兰数啊。。
那就来骗一波访问量吧
#include<cstdio>
#include<cmath>
double e=2.7182818284;
double ooo (double x,int y)
{
double a=1;
for (int u=1;u<=y;u++) a*=x;
return a;
}
int main()
{
double n;
scanf("%lf",&n);
printf("%lf",sqrt(2*M_PI*n)*ooo(n/exp(1),(int)n));
return 0;
}
同时他还能弄出阶乘有多少位。。不知道算不算一个推导啦
反正证明我也没看懂
#include<cstdio>
#include<cmath>
int main()
{
int n;
scanf("%d",&n);
if (n==1) printf("1");
else printf("%d\n",(int)(((log10((long double)2*M_PI*n))/2+n*log10((long double)n/exp(1)))+1));
return 0;
}