[求助]300!
计算300的阶乘??~~~谢!!!
----------------解决方案--------------------------------------------------------
方法倒是很简单,但是结果肯定非常非常大。
试问用什么类型来装结果呢?
----------------解决方案--------------------------------------------------------
对于n<=170的整数都可以. #include<stdio.h> #include<conio.h>
double fact(long n) { double fac; if(n==0) fac=1; else fac=n*fact(n-1); return fac; }
void main( ) { long n; printf("Input n:"); scanf("%ld",&n); printf("%ld!=%.0lf\n",n,fact(n)); getch( ); } 但对于大于170的整数整数则要应用字符串来解. 具体如何解有点思路,但是实习时出了点问题.以后再看吧.
----------------解决方案--------------------------------------------------------
要精确解~~
----------------解决方案--------------------------------------------------------
我自己编了一个
大家看看
#include<iostream.h>
#define N 100000
int main()
{
int a[N],m,n,i,j,w;
a[0]=1;
for(i=1;i<N;i++)
a[i]=0;
cout<<"计算n!,请输入n"<<endl;
cin>>n;
for(i=1;i<=n;i++)
{
w=0;
for(j=0;j<N;j++)
{
a[j]=a[j]*i+w;
w=0;
if(a[j]>=10)
{
w=a[j]/10;
a[j]=a[j]%10;
}
}
}
for(i=N-1;i>=0;i--)
{
if(a[i]!=0)
{
m=i;
cout<<"共"<<m<<"位"<<endl;
break;
}
}
cout<<n<<"!为: "<<endl;
for(i=m;i>=0;i--)
cout<<a[i];
cout<<endl;
return 0;
}
----------------解决方案--------------------------------------------------------
你需要一个大数乘运算历程。
----------------解决方案--------------------------------------------------------
高精度 大整数相乘 用int数组存放结果撒
----------------解决方案--------------------------------------------------------