1058 N的阶乘的长度
来源:互联网 发布:余佳文 知乎 编辑:程序博客网 时间:2024/06/05 08:02
1058 N的阶乘的长度
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input
输入N(1 <= N <= 10^6)
Output
输出N的阶乘的长度
Input示例
6
Output示例
3
一、任意数的长度公式:给一个数X,len=log10(X)+1就是X这个数的长度 二、求N!有多少位。因为有斯特林公式,所以求n!的位数即
log10(n!)=log10(sqrt(2*acos(-1.0)*n))+n*log10(n/exp(1.0));
#include <iostream> #include <algorithm> #include<string.h> #include<stdio.h> #include<math.h> using namespace std; const double PI=3.1415926; int main() { int t,n,a; while(scanf("%d",&n)!=EOF) { a=(int)((0.5*log(2*PI*n)+n*log(n)-n)/log(10)); printf("%d\n",a+1); } return 0; }
N!=1*2*3*4*5*............*N;
如果要计算N!后得到的数字,则我们可以知道其等于lgN!+1
lgN!=lg1+lg2+lg3+lg4+lg5+....................+lgN;
但是当N很大的时候,我们可以通过数学公式进行优化:(即Stirling公式)
N!=sqrt(2*pi*N)*(N/e)^N;(pi=3.1415926=acos(-1.0),e=2.718)
lgN!=(lg(2*pi)+lgN)/2+N*(lgN-lge);
0 0
- 1058 N的阶乘的长度
- 1058 N的阶乘的长度
- n的阶乘的长度
- 求N阶乘的长度
- 51nod 1058 N的阶乘的长度
- 51nod 1058 N的阶乘的长度
- 51Nod-1058-N的阶乘的长度
- 51nod 1058 N的阶乘的长度 数学
- 51nod 1058 N的阶乘的长度
- 【51nod】1058 N的阶乘的长度
- 51Nod 1058 N的阶乘的长度
- 【51Nod】1058 N的阶乘的长度
- 51Nod-1058-N的阶乘的长度
- 51Nod 1058 N的阶乘的长度(斯特林)
- 51nod 1058 N的阶乘的长度
- 51nod 1058 N的阶乘的长度
- 51nod1058 N的阶乘的长度
- N的阶乘的长度(斯特林)
- 数组去重的两种方式
- Piggy-Bank hd 1114 (完全背包)
- java允许请求跨域访问
- C# 闭包对象
- STL之deque容器
- 1058 N的阶乘的长度
- AES加密解密算法的FPGA实现(一)
- 【杭电oj206】Picture
- java简单加密解密
- 使用Sublime Text 3的HTML-CSS-JS Prettify插件格式化代码
- c语言动态分配内存空间(转)
- JavaScript,全选、全不选、反选、无刷新删除、批量删除、即点即改入库
- coffee在nodejs端的调试
- 自定义左边含有图片的EditText