今天早上由于卡特兰数太大是不会求。。 取膜的数也很大,用卢卡斯也不好做 于是就想有没有更快的求阶乘 偶然间发现了这个 由于知识水平不够,于是没看懂证明。。 但结论还是看懂了 不想贴图,https://baike.baidu.com/item/斯特林公式/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; }