很简单的一道高精度模拟题。。直接上代码,详见注释吧
#include<bits/stdc++.h>
using namespace std;
int a[2000],b[2000],c[2000],n;
bool t = 0;
void add(int *a,int *c)
{
int jw = 0;//进位
for(int i = 1; i <= 1000; i++)
{
c[i] += a[i] + jw;//加上a[i],再加上进位
jw = c[i] / 10;//处理进位
c[i] %= 10;
}
}
void chen(int *a,int c)
{
int jw = 0;
for(int i = 1; i <= 1000; i++)
{
a[i] = a[i] * c + jw;//乘上a[i],再加上进位
jw = a[i] / 10;//处理进位
a[i] %= 10;
}
}
int main()
{
cin>>n;
a[1] = 1;//初始化
for(int i = 1; i <= n; i++)
{
chen(a,i);//将高精度的a * 低精度的i
add(a,c);//将高精度的a * 高精度的c
}
for(int i = 1000; i > 0; i--)//逆序输出
{
if(c[i]) t = 1;
if(t) cout<<c[i];
}
return 0;
}