阶乘的精确值
2010-06-05 22:59
190 查看
#include<iostream> #include<string> using namespace std; const int maxn=3000; int f[maxn]; int main() { int n; int i,j; cin>>n; memset(f,0,sizeof(f)); f[0]=1; for(i=2;i<=n;i++) { int c=0; for( j=0;j<maxn;j++) { int s=f[j]*i+c; f[j]=s%10; c=s/10; } } for(j=maxn-1;j>=0;j--) if(f[j]) break; //忽略前导0; for( i=j;i>=0;i--) cout<<f[i]; cout<<endl; return 0; }
输入:30
输出:265252859812191058636308480000000
/*一个比较大的整数的阶乘,精确结果就需要用数组来保存。1000的阶乘大概是4*pow(10,2567),
所以我们就用一个3000个元素的数组f来保存。f[0]保存个位,f[1]保存十位......
在输出的时候要输出前导0。*/
看代码的一点经验:我不是一个高手,有时候看代码看了老半天都看不懂,有些代码表面上是看不出什么的,这个时候就要慢慢来,按着代码一步步的推算。这个代码首先我没看懂,我是推算了一下,推到第4、5步的时候就知道了程序原理。看程序看多了,看懂了,写起程序来要顺手多了。
相关文章推荐
- c语言求阶乘精确值示例
- 剑指Offer AccurateFactorial 计算精确的阶乘
- 阶乘的精确值(大数)
- 阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右
- 大数阶乘的位数和精确值计算
- 精确求阶乘
- 阶乘的精确值 大数据存放
- C#阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右
- 阶乘的精确值(白皮书)
- 大数阶乘的位数和精确值计算
- 算法竞赛入门经典-阶乘的精确值
- 大数阶乘的位数和精确值计算【转】
- 阶乘的精确值
- 阶乘的精确值
- 【算法入门经典】 题目 5.2.2 阶乘的精确值
- 阶乘的精确值(借鉴白书)
- C#阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右
- 编写阶乘计算精确值的自定义函数
- 阶乘的精确值计算
- 阶乘的精确值