/*此題關鍵部分在于進位的處理,以及結果的輸出。重點留意code的第15-18行 21-23行 */ #include<stdio.h>#include<string.h>int main(){ int R[3000];//儲存結果的數組 int n,i,j; int num; memset(R,0,sizeof(R));//先將結果數組全部賦值為0 scanf("%d",&n); R[0]=1;//第一位表示個位 num=1;//表示當前保存結果的數組中有效的位數 for(i=2;i<=n;i++){ int c=0;//c表示進位,初始化為0 for(j=0;j<3000;j++){ int s=R[j]*i+c;//s暫時儲存結果,由進位和當前位乘積相加得到 R[j]=s%10;//去除十位數字,保留個位數字 c=s/10;//求進位 } } for(i=2999;i>=0;i--) if(R[i]) break;//去除結果數組前面無效的0部分 for(j=i;j>=0;j--) PRintf("%d",R[j]);//由高到低輸出結果 printf("/n"); return 0;}
新聞熱點
疑難解答