hdu-1042(大数+万进制)

时间:2022-05-06 15:01:07

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042

参考文章:https://blog.csdn.net/tigerisland45/article/details/51530528

题意:求n!(n<=1000)数字很大,可以用万进制来做,就是到了10000就进一,每个数字用数组存储。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[];
void fun(int n)
{
memset(a,,sizeof(a));
a[]=;
int tp,i,j,dig=;
for(i=;i<=n;i++)
{
tp=;
for(j=;j<dig;j++)
{
a[j]=a[j]*i+tp;
tp=a[j]/;
a[j]=a[j]%;
}
if(tp>)
{
a[dig++]=tp;
}
}
printf("%d",a[dig-]);
for(i=dig-;i>=;i--)
printf("%04d",a[i]);
printf("\n");
}
int main(void)
{
int n;
while(~scanf("%d",&n))
{
fun(n);
}
return ;
}