我们以1000为例,为了保存结果,需要先分析1000!有多大。大约为4*10的2567次方,因此可以用一个3000个的元素的数组f保存。为了方便进位,我们让f[0]保存各位,f[1]保存十位。。。。。。在输出时要忽略前导0。4!=24,那么从f[2]~f[1000]都为0需要忽略输出。
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=3000; 7 int f[maxn]; 8 int main() 9 {10 int i,j,n;11 while(cin>>n)12 {13 memset(f,0,sizeof(f));14 f[0]=1;15 for(i=2;i<=n;i++)16 {17 int c=0;18 for(j=0;j =0;j--)26 if(f[j])break;//忽略前导027 for(i=j;i>=0;i--)28 cout<