zoukankan      html  css  js  c++  java
  • nyoj 69-数的长度 (log10(),计算数的位数)

    69-数的长度


    内存限制:64MB 时间限制:3000ms 特判: No
    通过数:10 提交数:13 难度:1

    题目描述:

        N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?

    输入描述:

    首行输入n,表示有多少组测试数据(n<10)
    随后n行每行输入一组测试数据 N( 0 < N < 1000000 )

    输出描述:

    对于每个数N,输出N!的(十进制)位数。

    样例输入:

    3
    1
    3
    32000

    样例输出:

    1
    1
    130271
    
    分析:
      1、n个数相乘,最终得到的数它的位数为n个数每个数进行log10()的运算再求和,最后加上1;
      2、ps:用Java做大数乘法最后来数位数,会超时;

    C/C++代码实现(AC):
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 #include <set>
    10 
    11 using namespace std;
    12 
    13 int main()
    14 {
    15     int t;
    16     scanf("%d", &t);
    17     while(t --)
    18     {
    19         double a, ans = 0;
    20         scanf("%lf", &a);
    21         for(int i = 1; i <= a; ++ i)
    22             ans += log10(i);
    23         printf("%d
    ", int(ans) + 1);
    24     }
    25     return 0;
    26 }

    Java代码(TLE):

     1 import java.util.*;
     2 import java.io.*;
     3 import java.math.*;
     4 
     5 public class Main {
     6     public static void main(String args[]) {
     7         Scanner scan = new Scanner(System.in);
     8         int t = scan.nextInt();
     9         while (t > 0) {
    10             t--;
    11             int k = scan.nextInt();
    12             BigInteger a = BigInteger.ONE;
    13             for(int i = 1; i <= k; ++ i) {
    14                 a = a.multiply(BigInteger.valueOf(i));
    15             }
    16             String str = a.toString();
    17             System.out.println(str.length());
    18         }
    19     }
    20 }
  • 相关阅读:
    东驴西磨
    深入理解计算机系统 第二章信息的表示和处理(笔记小结)
    Amdahl 阿姆达尔定律(系统优化)
    想你的夜——葱油饼
    TypeScript and AWS Lambda practicing road map
    "Silicon Valley-like" companies think of engineers as value generators
    original intentions
    Canopy is hiring Postgres SQL Engineer
    在多线程中 feign 调用,服务提供方拿不到 request 的错误
    CF1542D
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9111256.html
Copyright © 2011-2022 走看看