1:把n!写成10^m次方的形式,如果m=2,就说明是三位数。

【维基百科】

【别处摘来的】可以将n!表示成10的次幂,即n!=10^M(10的M次方,10^2是3位M+1就代表位数)则不小于M的最小整数就是
    n!的位数,对该式两边取对数,有M=log10^n!即:
    M = log10^1+log10^2+log10^3...+log10^n
    循环求和,就能算得M值

,该M是n!的精确位数。

Problem : 1018 ( Big Number )     Judge Status : Accepted
RunId : 6013028    Language : C    Author : qq1203456195
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
 1 #include <stdio.h>
 2 #include <math.h>
 3 int main()
 4 {
 5     int n,cas,i;
 6     double sum;
 7     scanf("%d",&cas);
 8     while (cas--)
 9     {
10         scanf("%d",&n);
11         sum=1;
12         for(i=1;i<=n;i++)    sum+=log10((double)i);
13         printf("%d\n",(int)sum);
14     }
15     return 0;
16 }

2:斯特林公式的应用【没用这个,代码是别人的】

由斯特林[striling]公式可得:lnN!=NlnN-N+0.5ln(2N*pi)

而N的阶乘的位数等于:log10(N!)取整后加1

log10(N!)=lnN!/ln(10) 所以len=lnN!/ln(10)+1

 1 #include<iostream>
 2 #include<cmath>
 3 const double PI=3.14159265;
 4 using namespace std;
 5 int main()
 6 {
 7     int t,n;
 8     double sum;
 9     cin>>t;
10     while(t--)
11     {
12         cin>>n;
13         sum=(n*log(n) - n + 0.5*log(2*n*PI))/log(10)+1;
14         printf("%d/n",(int)sum);
15     }
16     return 0;
17 }

转载于:https://www.cnblogs.com/CheeseZH/archive/2012/05/28/2522786.html

HDOJ1018 ( Big Number ) 【斯特林公式---处理阶乘及阶乘位数的问题】相关推荐

  1. 预处理阶乘和阶乘逆元_计算数字的阶乘| 8086微处理器

    预处理阶乘和阶乘逆元 Problem statement: 问题陈述: Write an assembly language program for calculating the factorial ...

  2. c语言中10的6次方阶乘运算,阶乘的运算方法

    满意答案 rfhedn7h4 推荐于 2016.11.28 采纳率:53%    等级:12 已帮助:8690人 [阶乘的概念] 阶乘(factorial)是基斯顿·卡曼(Christian Kram ...

  3. C语言 求n的阶乘及阶乘和

    题目 随机输入一个整数n,求出n的阶乘 思路 阶乘,每次乘的数依次递增,直到第n个数,因此我们可以设置一个变量result,用于储存每一次的运算结果.且每次乘的数都依次递增,可以使用for循环语句,所 ...

  4. c语言计算阶乘的倒数和,for循环计算某个数的阶乘、阶乘和及其倒数的阶乘和...

    //4的阶乘 int jc = 4; //定义一个变量用来代表要计算的数值 long jd =1; //定义最终输出的阶乘 for(int i = 1; i <= jc;i++) //定义循环加 ...

  5. 大数运算(7)——大数阶乘(求阶乘)

    对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大. 就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值.这时候,我们要通 ...

  6. for 创建一个方法:键盘录入一个数 ,求它的 阶乘 及 阶乘的和

    package Way_chongzai; //创建一个方法:键盘录入一个数 求它的阶乘 import java.util.Scanner; public class Test_03 { public ...

  7. 语句练习题 折纸、阶乘、阶乘求和、范围内条件查找(水仙花数)。

    题目一:一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? 题目二:计算5的阶乘 5!的结果是? 题目三:计算 1+1/2!+1/3!+1/4!+...1/20 ...

  8. python编程阶乘_Python阶乘实现的三种方法

    最简单的方法 #通过用户输入数字计算阶乘# 获取用户输入的数字 num = int(input("请输入一个数字: ")) factorial = 1 #查看数字是负数,0或 正数 ...

  9. C语言:计算阶乘和阶乘的和

    从键盘输入一个数,用C语言计算该数的阶乘 #include <stdio.h> #include<stdlib.h> int main() {int i,sum = 0, p ...

最新文章

  1. 数据驱动的云托管服务最佳范式
  2. 做一名真正的软件工程师
  3. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task3:网络模型结构发展
  4. 使用Spring和Hibernate进行集成测试有多酷
  5. keras训练完以后怎么预测_农村小孩只有户口,没有承包地,以后怎么养老?看完我安心了...
  6. 综合短网址缩短和还原源码
  7. 【转】Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用...
  8. 普通笔记本能运行Linux么,Windows ARM 笔记本电脑现在可以运行 Ubuntu
  9. 中国产品质量协会AAA等级企业限定为500家
  10. Java餐厅点餐系统【附源码报告】
  11. 农产品SCM供应链协同系统解决方案
  12. Oracle 索引原理和种类
  13. 企业邮箱客户端服务器异常,企业邮箱使用客户端连接提示“不知道这样的主机”的解决...
  14. 安装vim管理插件 pathogen
  15. 图像特征(一)——颜色特征(颜色直方图,颜色矩,颜色集,颜色聚合向量和颜色相关图)
  16. asp.net gridview itemtemplate中控件事件获取行参数
  17. 岛屿问题 通用解-463.岛屿周长-200.岛屿数量-695.岛屿的最大面积-827.最大人工岛
  18. 【禅道】禅道开源版搭建教程
  19. 沪江网校SWF课件打开后叹号问题的解决方案
  20. 请你记住——《荒原的呼唤》选载之五

热门文章

  1. 单刹车信号不合理故障_航班盘旋数十圈返航 天津航空:刹车温度传感器等故障...
  2. 此设备不允许更改其写入高速缓存设置_优化SiT15xx驱动器设置32 kHz晶体输入低功耗MCU程序设计细节(一)...
  3. yolov5继续训练_震惊! 它来了!YOLOv5它来了!
  4. angular语言前端开发_详解使用angular-cli发布i18n多国语言Angular应用_唇印_前端开发者...
  5. mate10是否支持html,NFC功能是什么 华为Mate 10支持NFC功能吗【详解】
  6. 定义斜体文本的html标签,HTML 文本格式化
  7. 享元模式在文本编辑器中的应用
  8. flink EventTime与Window
  9. 这几个概念你可能还是没搞清require、import和export
  10. Zabbix邮件报警设置