输入 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);
- }
- }
来源: http://www.bubuko.com/infodetail-2860236.html