題目描述:數組
1 2 3
1 2 6
這道題要用數組來儲存最終的結果。
注意一個很小的細節(俺在那裏測了老半天,傷!),就是0的階乘爲1;
下面附上本身寫的代碼:
1 #include <stdio.h> 2 #include <time.h> 3 #include <string.h> 4 5 6 #define mod 10000 7 8 int main() { 9 short int rem[10000],i,index,j; 10 int n,jw; 11 // clock_t start,finish; 12 // start = clock(); 13 // double total = 1; 14 while(~scanf("%d", &n)) { 15 memset(rem, 0, sizeof(rem)); 16 rem[1] = 1; 17 index = 2; 18 jw = 0; 19 // if (n == 0) 20 // printf("0"); 21 for (i = 1; i <= n;i++) { 22 for (j=1;j<index;j++) { 23 int tem = rem[j]*i+jw; 24 rem[j] = tem % mod; 25 jw = tem / mod; 26 } 27 if (jw) { 28 rem[index] = jw; 29 jw = 0; 30 index++; 31 } 32 } 33 for (i=index-1;i>=1;i--) { 34 if (i == index-1) 35 printf("%d", rem[i]); 36 else 37 printf("%04d", rem[i]); 38 } 39 puts(""); 40 } 41 // finish = clock(); 42 // printf("\n程序用時爲:%lf", (double)(finish-start)/CLOCKS_PER_SEC); 43 return 0; 44 }