输入:
Enter n:500
输出:
12201368259911100687012387854230469262535743428031928421924135883858453731
53881997605496447502203281863013616477148203584163378722078177200480785205
15932928547790757193933060377296085908627042917454788242491272634430567017
32707694610628023104526442188787894657547771498634943677810376442740338273
65397471386477878495438489595537537990423241061271326984327745715546309977
20278101456108118837370953101635632443298702956389662891165897476957208792
69288712817800702651745077684107196243903943225364226052349458501299185715
01248706961568141625359056693423813008856249246891564126775654481886506593
84795177536089400574523894033579847636394490531306232374906644504882466507
59467358620746379251842004593696929810222639719525971909452178233317569345
81508552332820762820023402626907898342451712006207714640979456116127629145
95123722991334016955236385094288559201872743379517301458635757082835578015
87354327688886801203998823847021514676054454076635359841744304801289383138
96881639487469658817504506926365338175055478128640000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000
#include<iostream>
using namespace std;
int main()
{
int a[10000];
int n;
while(cin>>n&&n>=0)
{
a[0]=1;
int temp=0;
int digit=1;
for(int i=2;i<=n;i++)//该for循环对于大于2的阶乘才奏效。
{
int num=0;
for(int j=0;j<digit;j++)
{
temp=a[j]*i+num;
a[j]=temp%10;
num=temp/10;
}
while(num)
{
a[digit]=num%10;//越前存储比如f[0]存4不动,f[1]存2。
num/=10;
digit++;
}
}
for(int i=digit-1;i>=0;i--)//反转输出,先输出f[1]为2,再输出f[0]为4。
{
cout<<a[i];
}
cout<<endl;
}
return 0;
}