HDOJ1018 ( Big Number ) 【斯特林公式---处理阶乘及阶乘位数的问题】
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!的精确位数。
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 ) 【斯特林公式---处理阶乘及阶乘位数的问题】相关推荐
- 预处理阶乘和阶乘逆元_计算数字的阶乘| 8086微处理器
预处理阶乘和阶乘逆元 Problem statement: 问题陈述: Write an assembly language program for calculating the factorial ...
- c语言中10的6次方阶乘运算,阶乘的运算方法
满意答案 rfhedn7h4 推荐于 2016.11.28 采纳率:53% 等级:12 已帮助:8690人 [阶乘的概念] 阶乘(factorial)是基斯顿·卡曼(Christian Kram ...
- C语言 求n的阶乘及阶乘和
题目 随机输入一个整数n,求出n的阶乘 思路 阶乘,每次乘的数依次递增,直到第n个数,因此我们可以设置一个变量result,用于储存每一次的运算结果.且每次乘的数都依次递增,可以使用for循环语句,所 ...
- c语言计算阶乘的倒数和,for循环计算某个数的阶乘、阶乘和及其倒数的阶乘和...
//4的阶乘 int jc = 4; //定义一个变量用来代表要计算的数值 long jd =1; //定义最终输出的阶乘 for(int i = 1; i <= jc;i++) //定义循环加 ...
- 大数运算(7)——大数阶乘(求阶乘)
对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大. 就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值.这时候,我们要通 ...
- for 创建一个方法:键盘录入一个数 ,求它的 阶乘 及 阶乘的和
package Way_chongzai; //创建一个方法:键盘录入一个数 求它的阶乘 import java.util.Scanner; public class Test_03 { public ...
- 语句练习题 折纸、阶乘、阶乘求和、范围内条件查找(水仙花数)。
题目一:一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? 题目二:计算5的阶乘 5!的结果是? 题目三:计算 1+1/2!+1/3!+1/4!+...1/20 ...
- python编程阶乘_Python阶乘实现的三种方法
最简单的方法 #通过用户输入数字计算阶乘# 获取用户输入的数字 num = int(input("请输入一个数字: ")) factorial = 1 #查看数字是负数,0或 正数 ...
- C语言:计算阶乘和阶乘的和
从键盘输入一个数,用C语言计算该数的阶乘 #include <stdio.h> #include<stdlib.h> int main() {int i,sum = 0, p ...
最新文章
- 数据驱动的云托管服务最佳范式
- 做一名真正的软件工程师
- 【天池赛事】零基础入门语义分割-地表建筑物识别 Task3:网络模型结构发展
- 使用Spring和Hibernate进行集成测试有多酷
- keras训练完以后怎么预测_农村小孩只有户口,没有承包地,以后怎么养老?看完我安心了...
- 综合短网址缩短和还原源码
- 【转】Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用...
- 普通笔记本能运行Linux么,Windows ARM 笔记本电脑现在可以运行 Ubuntu
- 中国产品质量协会AAA等级企业限定为500家
- Java餐厅点餐系统【附源码报告】
- 农产品SCM供应链协同系统解决方案
- Oracle 索引原理和种类
- 企业邮箱客户端服务器异常,企业邮箱使用客户端连接提示“不知道这样的主机”的解决...
- 安装vim管理插件 pathogen
- 图像特征(一)——颜色特征(颜色直方图,颜色矩,颜色集,颜色聚合向量和颜色相关图)
- asp.net gridview itemtemplate中控件事件获取行参数
- 岛屿问题 通用解-463.岛屿周长-200.岛屿数量-695.岛屿的最大面积-827.最大人工岛
- 【禅道】禅道开源版搭建教程
- 沪江网校SWF课件打开后叹号问题的解决方案
- 请你记住——《荒原的呼唤》选载之五
热门文章
- 单刹车信号不合理故障_航班盘旋数十圈返航 天津航空:刹车温度传感器等故障...
- 此设备不允许更改其写入高速缓存设置_优化SiT15xx驱动器设置32 kHz晶体输入低功耗MCU程序设计细节(一)...
- yolov5继续训练_震惊! 它来了!YOLOv5它来了!
- angular语言前端开发_详解使用angular-cli发布i18n多国语言Angular应用_唇印_前端开发者...
- mate10是否支持html,NFC功能是什么 华为Mate 10支持NFC功能吗【详解】
- 定义斜体文本的html标签,HTML 文本格式化
- 享元模式在文本编辑器中的应用
- flink EventTime与Window
- 这几个概念你可能还是没搞清require、import和export
- Zabbix邮件报警设置