(TOJ1198)求n的阶乘

描述

给定一个数n,范围为0≤n≤100,请你编程精确的求出n的阶乘n!。

输入

输入数据有多行,每行一个整数n,当n<0时输入结束。

输出

输出n的阶乘。

样例输入

1
2
3
4
-1

样例输出

1
2
6
24

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 #include<ctype.h>
 5 
 6 int a[10000];
 7 
 8 void deal(int n)
 9 {
10     int i,j,len,flag,t;
11     a[0]=1;
12     if(n==0)
13     {
14         printf("1\n");  
15         return;
16     } 
17     else 
18     {
19           len=1;
20           for(i=1; i<=n; i++)
21           {
22               flag=0;
23               for(j=0; j<len; j++)
24               {
25                   t=i*a[j];
26                   a[j]=(t+flag)%10;
27                   flag=(t+flag)/10;
28               }
29               while(flag!=0)
30               {
31                   a[j]=flag%10;
32                   j++; len++;
33                   flag=flag/10;
34               }
35           }
36           for(i=len-1; i>=0; i--)
37           {
38               printf("%d",a[i]);
39           }
40           printf("\n");
41     }
42 }
43 
44 void solve()
45 {
46     int n;
47     while(scanf("%d",&n) && (n>=0)){
48         deal(n);
49     }
50 }
51 
52 int main()
53 {
54     solve();
55     return 0;
56 }

 
原文地址:https://www.cnblogs.com/xueda120/p/3083491.html