标签:style blog http color os io 数据 div
题目链接:http://poj.org/problem?id=1423
思路:如果用普通方法做肯定会超时,数据也存不下,只能用数学方法来优化。这里用到了斯特林公式。秒出~~
公式为 n! = log10(sqrt(2*pi*n)) + n * log10(n/e)
这个公式只能求出n!的估算值,这里还需要一个技巧就是log10(X)的结果加1便是X的位数~~~
代码:
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> #define e 2.718281828459045 #define pi 3.141592653589793239 using namespace std; int main () { int cas,n; scanf("%d",&cas); while (cas --) { scanf("%d",&n); double t = log10(sqrt(2*pi*n)) + n * log10(n/e); printf ("%d\n",(int)t + 1); } return 0; }
POJ 1423 Big Number,布布扣,bubuko.com
标签:style blog http color os io 数据 div
原文地址:http://www.cnblogs.com/ltwy/p/3926969.html