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 Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            double ans;
            int i;
            ans=1;
            for( i=1;i<=n;i++)
                ans+=Math.log10(i);
               long x=(long)ans;
            System.out.println(x);
        }
         sc.close();

    }

}
时间: 2024-08-03 15:39:13

1058 N的阶乘的长度的相关文章

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

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

【51NOD-0】1058 N的阶乘的长度

[算法]数学 [题解]n!的位数相当于ans=log10(n!)上取整,然后就可以拆出来加了. 可以用log10(i)或log(i)/log(10) 阶乘好像有个斯特林公式-- #include<cstdio> #include<cmath> using namespace std; int main() { int n; scanf("%d",&n); long double ans=0; for(int i=1;i<=n;i++)ans+=lo

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很小的

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> #incl

N的阶乘的长度

阶乘是乘法 , 乘法的话 , 几位数*几位数的位数 就是 哪两个几位数相加 .  这个可以用log10来解决 , 所以有如下代码 . 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #inc

【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