POJ--如何求阶乘的位数
来源:互联网 发布:兄弟连php视频 百度云 编辑:程序博客网 时间:2024/06/05 18:25
题意给你正整数n<=10^7 求n的阶乘的位数
当然 你可以去做大数的加法... 那么完全计算10的7次阶乘,然后统计其位数,也需要几十分钟才行。
这东西涉及到很多数学公式证明的问题,计算机仅仅只是辅助。
题目只需要求其位数。
解法1:
现由斯特林[stirling]公式可得:
lnN!=NlnN-N+0.5ln(2N*pi)
而10的7次方阶乘的位数等于:
log10(N!)取整后加1
log10(N!)=lnN!/ln(10)
-----------------------------------朴素的分割线-------------------------------
# include <iostream># include <math.h>const double PI = 3.14159265 ;using namespace std;int main(){ int N,T; cin>>T; while(T--) { cin>>N; int len=ceil((N*log((double)N)-N+log(2.0*(double)N*PI)/2.0)/log(10.0)); if(!len)len++; //len=0 when n=1 notice cout<<len<<endl; } return 0;}解法2:
#include<cstdio>#include<iostream>#include<math.h>using namespace std;int main(){ long i,m; double sum; scanf("%ld",&m); sum=1.0; for(i=1;i<=m;i++) { sum+=log10(i);} printf("%ld\n",(long)sum);}
0 0
- POJ--如何求阶乘的位数
- POJ 1423 求阶乘的位数
- 求阶乘的位数
- POJ 2661 Factstone Benchmark 求最大阶乘的位数
- 求大阶乘的位数
- 求N的阶乘的位数
- 求n的阶乘的位数
- 求大数阶乘结果的位数
- Big Number(求任意阶乘的位数)
- HDU 1018 求阶乘的位数
- UVa1185 - Big Number(求阶乘的位数)
- 求一个数阶乘的位数
- 求一个数阶乘的位数
- 大数阶乘求位数
- 计算阶乘的位数 poj 1423
- POJ 1423 计算阶乘的位数
- 求大数阶乘位数方法
- 求一个数的阶乘的结果的位数
- android ListView之BaseAdapter的使用方式
- 也来一篇关于Infragistics WPF Report的使用教程 (二)
- Java编程思想笔记——第九章
- Cadence
- 关于投票系统刷票方式原理(突破ip限制刷票PHP版)
- POJ--如何求阶乘的位数
- 解决模式对话框和window.open打开新页面Session会丢失问题
- 常见html加下划线,加粗等代码
- crtmpserver基础类介绍
- C++用new和不用new创建类对象区别
- php整理文档分类到一定格式(多数据时候方便)
- 变量,小学生数学与简单的交互
- crtmpserver基本流程介绍
- IOS开发——Xcode调试SIGPIPE信号解决办法