数的长度【南阳 oj 题目69】
来源:互联网 发布:js 禁用input select 编辑:程序博客网 时间:2024/05/02 06:09
点击打开链接
N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?
- 输入
- 首行输入n,表示有多少组测试数据(n<10)
随后n行每行输入一组测试数据 N( 0 < N < 1000000 ) - 输出
- 对于每个数N,输出N!的(十进制)位数。
- 样例输入
31332000
- 样例输出
11130271
题解一:直接利用斯特林公式
s=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );(n>1)
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int main(){int t,n,s;cin>>t;while(t--){cin>>n;if(n==1)cout<<"1"<<endl;else {s=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 ); cout<<s<<endl;}}return 0;}
然后利用for循环求m的值(n值过大可能会超时)
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int main() { int n; cin>>n; while(n--) { int m,s; double t=1; cin>>m; for(int i=1;i<=m;i++) t=t+log10(i); s=(int)t; cout<<s<<endl;} return 0;}
阅读全文
0 0
- 数的长度【南阳 oj 题目69】
- 有趣的数 【南阳oj 题目85】
- 南阳 69 数的长度
- 南阳 69 数的长度
- 数的长度(南阳Oj难度1)
- 南阳理工oj 题目85 有趣的数 Cantor数表
- 南阳oj 题目11 奇偶数分离
- 南阳oj 题目13 Fibonacci数
- 南阳oj 题目39 水仙花数
- 南阳oj 蛇形填数 题目33
- 南阳oj 题目32 组合数
- 南阳OJ 题目33:蛇形填数
- 南阳oj 题目722 数独
- 南阳oj 题目100 1的个数
- 南阳oj 题目206 矩形的个数
- 南阳oj 光棍的yy 题目655
- 南阳OJ 题目100:一的个数
- 阶乘的0 【南阳 oj 题目84】
- js常用对象
- flex布局
- 深入理解Java:注解(Annotation)自定义注解入门
- 解决eclipse自动生成参数为arg0,arg1问题
- hdoj-2004
- 数的长度【南阳 oj 题目69】
- html 列表
- 项目管理工作中的一些自我反省
- C#调用Excel版本不兼容的解决方法
- shell 脚本 文件比较和数值比较
- Activity启动分析
- Dom动态添加事件,不能使用循环变量的问题
- 元素的垂直水平居中的三种方法
- html 布局