简单题
主要是要用数组模拟阶乘运算,即用数组记录阶乘的结果。
以前用数组模拟的时候数组的一位表示一万(即万进制),
而在这个题目中因为要求阶乘结果每一位的和,所以数组的一位对应
阶乘的一位(十进制)。
代码如下:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[10000];
int main()
{
int n,i,j,k;
while(cin>>n)
{
k=0;i=1;a[0]=1;
int cnt=0;
while(i<=n)
{
cnt=0;
for(j=0;j<=k;j++)
{
a[j]=a[j]*i+cnt;
if(a[j]>=10)
{
cnt=a[j]/10;
a[j]=a[j]%10;
}
else
cnt=0;
}
if(cnt)
{
while(cnt/10!=0)
{
a[++k]=cnt%10;
cnt=cnt/10;
}
a[++k]=cnt;
}
i++;
}
int sum=0;
for(i=0;i<=k;i++)
sum+=a[i];
cout<<sum<<endl;
}
}