输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
输入
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000) 第2 - T + 1行:每行1个数N。(1 <= N <= 10^9)
输出
共T行,输出对应的阶乘的长度。
输入样例
3
4
5
6
输出样例
2 3 3
斯特林公式:n!≈(2πn)^(1/2)*(n/e)^n.
对他取以10为底的对数即可。
代码:
#include <iostream> #include <cstdio> #include <cmath> #define MAX 50000 #define PI 3.1415926 using namespace std; int dp[MAX],n,d,c; int main() { int t; scanf("%d",&t); for(int i = 0;i < t;i ++) { scanf("%d",&n); printf("%lld\n",(long long)((log10(2 * PI * n) / 2 + n * (log10(n) - log10(exp(1))))) + 1); } }
如果觉得有帮助,点个推荐啦~