//此题非常简单,想想乘法是怎么运算的,阶乘数乘上原有的数的每一位就行了。
//但是数太大,那么我们让这个数的每一位放在数组里的每一个存单元就行了。
//在程序中,采用%来计算当前位的值,用/来计算进位值。=
//就是每个存储单元只放个位数的表示,如10 只放1
#incldue<stdio.h>
#define N 10
int main()
{
int a[3000],i,j,k; //数组开大一点
a[0]=1; //一定要初始数组a,
int n=10;
int wei=0; //从0开始计算。
for (i=2;i<=n;i++) //控制下一个阶乘数。
{
int jinwei=0;
for (j=0;j<=wei;j++) //下一阶乘数,分别与原有数的每一位相乘。
{
int w=a[j]*i+jinwei;
a[j]=w%N; //当前位的值,
jinwei=w/N;
}
while(jinwei>0) //调整wei 的值,进位。
{
wei++;
a[wei]=jinwei%N;
jinwei/=N;
}
}
for (k=wei;k>=0;k--)
{
printf("%d",a[k]);
}
return 0;
}
N的阶乘
最新推荐文章于 2020-01-31 11:38:35 发布