蓝桥杯-阶乘计算(C语言)

蓝桥杯-阶乘计算

思想

数学从1乘到n,1是个位相当于是存在a[0]中,其他位数初始值用memset定位0,输出的时候也要注意应该从第一个不是0的数开始倒叙输出。

#include 
#include 
#define MAX 10000
int main()
{
 int n,a[MAX],i,j,s,r=0;
 scanf("%d",&n);
 memset(a,0,sizeof(a));
 a[0]=1;
 for(i=2;i<=n;i++)
 {
  for(j=0;j<MAX;j++)
  {
   s=a[j]*i+r;
   r=s/10;
   a[j]=s%10;
  }
 }
 for(i=MAX-1;i>=0;i--)
 {
  if(a[i])
   break;
 }
 for(j=i;j>=0;j--)
   printf("%d",a[j]);
 return 0;
}

你可能感兴趣的:(蓝桥杯)