题目
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
cin >> n;
int a[6001];
memset( a, 0, sizeof(a) );
a[6000] = 1;
int bit = 6000;
for( int i = 1; i <= n; i++ )
{
int co = 0;//进位
for( int j = 6000; j >= bit; j-- )
{
a[j] = a[j]*i + co;
if( j == bit )//记录位数
{
if( a[j] > 9 )
bit-=1;
}
if( a[j] > 9 )//模拟竖式计算
{
co = a[j]/10;
a[j] %= 10;
}else
{
co = 0;
}
}
}
for( int i = bit; i <= 6000; i++ )
{
cout << a[i];
}
return 0;
}
有两种数组存储方式,一是从前往后,而是从后往前
加油!!!