阶乘的精确性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阶乘的精确性相关的知识,希望对你有一定的参考价值。
/*
输入不超过1000的正整数n,输出n!=1*2*3*……*n的精确结果。
样例输入:30
样例输出:265252859812191058636308480000000
例如 n=3;s=6;
n=4;s=24;
n=5;s=120;
1000的阶乘需要一个3000位的数组来存
*/
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int maxn=3003;//数组长度
int f[maxn];
int main()
{
int i,j,n,c,k;
while(cin>>n)
{
memset(f,0,sizeof(f));//清空数组
f[0]=1;
for(i=2;i<=n;i++)
{
c=0;
for(j=0;j<maxn;j++)
{
k=f[j]*i+c;
f[j]=k%10;
c=k/10;
}
}
for(j=maxn-1;j>=0;j--)
if(f[j]!=0)//利用0 1 来判断;
break;
for(i=j;i>=0;i--)
printf("%d",f[i]);
printf("\n");
}
return 0;
}
以上是关于阶乘的精确性的主要内容,如果未能解决你的问题,请参考以下文章