大数阶乘
序言:今天是我写博客的第二天,差点忘了写,反思一下,下次要早点发。
大数阶乘也是高精度题目中的入门题。它的主要思路和上一次我发的大数加法相似,也是以数组来按位处理数据。他的难度级别应该比大数加法还低一点。他的输入很简单,也不需要定义多余的辅助数组。只需要将需要求阶乘的数先输入到数组中。再将此数递减按位于数组中的数按位相乘求余,最终输出。
#include <stdio.h>
#include <string.h>
int main()
{
int A[10000],n,i,f=0,q;
scanf("%d",&n);
memset(A,0,sizeof(int)*10000);
for(i=n;i>=1;f++)
{ A[f]=i%10;
i=i/10;
}
for(i=n-1;i>=1;i--)
{
q=0;
for(f=0;f<10000;f++)
{
q=q+A[f]*i;
A[f]=q%10;
q=q/10;
}}
for(f=9999;f>=0;f--)
if(A[f]!=0)
break;
for(i=f;i>=0;i--)
printf("%d",A[i]);
printf("\n");
return 0;
}