51nod 1130 N的阶乘的长度 V2(斯特林近似)

输入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);
    }
}

原文地址:https://www.cnblogs.com/8023spz/p/10015277.html

时间: 2024-10-02 16:41:35

51nod 1130 N的阶乘的长度 V2(斯特林近似)的相关文章

1130 N的阶乘的长度 V2(斯特林近似)

1130 N的阶乘的长度 V2(斯特林近似)(51NOD基础题) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 1000) 第2 - T + 1行:每行1个数N.(1 <= N <= 10^9) Output 共T行,输出对应的阶乘的长度. Input示例 3 4 5 6 Output示例 2 3

51nod 1130 N的阶乘的长度(斯特林近似)

输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 1000) 第2 - T + 1行:每行1个数N.(1 <= N <= 10^9) Output 共T行,输出对应的阶乘的长度. Input示例 3 4 5 6 Output示例 2 3 3 斯特林公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大 所以斯特灵公式十分好用,而且,即使在n很小的

【BZOJ】1130 N的阶乘的长度 V2(斯特林近似)

[算法]数学 [题解]斯特林公式: #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const double pi=3.1415926535898,e=2.718281828459; int main() { int t; scanf("%d",&t); for(int i=1;i<=t;i++) { long long n; scanf

51nod 1058 N的阶乘的长度 (非暴力)

1058 N的阶乘的长度 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 取消关注 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Output示例 3 分析:(int)log10(100)=2,(int)log10(1000)=3,(int)log10(500)=2.所以不难发现和证明log10(x)+1=x的长度. 那么

51nod 1058 N的阶乘的长度 位数公式

1058 N的阶乘的长度基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3.Input输入N(1 <= N <= 10^6)Output输出N的阶乘的长度Input示例6Output示例3思路:位数公式 则有: 循环遍历即可 代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 ios::s

1058 N的阶乘的长度(51NOD基础题)

1058 N的阶乘的长度(51NOD基础题) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Output示例 3 /* n! 的长度 len = (int)log10(n!) + 1 ; -->> len = log10(1) + log10(2) + .... + log1

[2016-05-09][51nod][1008 N的阶乘 mod P]

时间:2016-05-09 21:21:54 星期一 题目编号:[2016-05-09][51nod][1008 N的阶乘 mod P] 题目大意:输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %) 分析:直接算- #include<stdio.h> using namespace std; typedef long long ll; int main(){ ll n,p,ans = 1; scanf("%lld%lld",&n,&

1058 N的阶乘的长度

1058 N的阶乘的长度 基准时间限制:1 秒 空间限制:131072 KB 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Output示例 3 * n!的长度等于log10(n!) import java.util.*; public class Main { public static void main(String[] args) { // TODO Au

51nod 1089 最长回文子串 V2(Manacher算法)

1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一个字符串Str,输出Str里最长回文子串的长度. Input 输入Str(Str的长度 <= 100000) Output 输出最长回文子串的长度L. Input示例 daabaac Output示例 5 #include <iostream> #include