样例都妹过(泪
#include<iostream>
#include<cstring>
using namespace std;
int a[52],b[52],c[102],d[52],f[102];
int len_a = 0,len_b = 1,len_c = 1,len_d = 1;
int main(){
int n;
b[0] = 1;
cin>>n;
for (int i = 1;i<=n;i++)
{
int p = i;
while (p>0) //采用在i-1的结果上累乘i
{
a[len_a] = p%10;//把i输入a数组
p /= 10;
len_a ++;
}
for (int i = 0;i<len_a;i++)
{
for (int j = 0;j<len_b;j++)
{
c[i+j] += a[i]*b[j];//高精乘
}
}
while (c[len_c]) len_c ++;
for (int i = 0;i<len_c;i++)
{
if (c[i] > 9)//c数组中存结果
{
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
while (c[len_c]) len_c ++;
len_b = len_c;//结果丢到b数组
for (int i = 0;i<len_b;i++)
{
b[i] = c[i];
}
//同时进行高精加法
for (int i = 0;i<len_c;i++)
{
d[i] += c[i];
}
while (d[len_d]) len_d ++;
for (int i = 0;i<len_d;i++)
{
if (d[i] > 9)
{
d[i+1] += d[i]/10;
d[i] %= 10;
}
}
while (d[len_d]) len_d ++;
}
for (int i = len_d - 1;i>=0;i--)
{
cout<<d[i];
}
cout<<endl;
return 0;
}