zoukankan      html  css  js  c++  java
  • Big Number

    问题陈述:

      杭州电子科技大学 HANGZHOU DIANZI UNIVERSITY Online Judge Problem - 1018

     

    问题解析:

      公式一:

        n! = 10^m => lg(10^m) = lg(n!) => m = lg(n) + lg(n-1) + lg(n-2) + ... + lg1;

        所以digits = (int)m + 1;

       公式二:stirling公式

        n! ≈ √2PIn(n/e)n                         

        化简:lg(n!) = 1/2lg(2*PI*n) + nlg(n/e);

    代码详解:

    I:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int i, n, t, digits;
    10     double m;
    11     cin >> n;
    12     while(n--) {
    13         m = 0;
    14         cin >> t;
    15         for(i=1; i<=t; i++) {
    16             m += log10(i*1.0);
    17         }
    18         digits = (int)m + 1;
    19         cout << digits << endl;
    20     }
    21     return 0;
    22 }

    II:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int n, t, digits;
    10     double PI = acos(double(-1));
    11     double e = exp(double(1));
    12     cin >> n;
    13     while(n--) {
    14         cin >> t;
    15         digits = (int)(0.5*log10(2*PI*t) + t*log10(t/e)) + 1;
    16         cout << digits << endl;
    17     }
    18     return 0;
    19 }

     转载请注明出处:http://www.cnblogs.com/michaelwong/p/4287232.html

        

  • 相关阅读:
    Linux centos7修改根目录
    gitlab的安装
    windows上svn图标不显示 绿色对号
    java中的Serializable接口
    List Map Set的线程安全
    javascript中的each遍历
    jdk 1.7新特性
    jdk 1.6 新特性
    jdk1.5 新特性
    java 运算符
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4287232.html
Copyright © 2011-2022 走看看