PAT 6-10
阿新 • • 發佈:2021-10-20
6-10 階乘計算升級版 (20 分)
本題要求實現一個列印非負整數階乘的函式。
函式介面定義:
void Print_Factorial ( const int N );
其中N
是使用者傳入的引數,其值不超過1000。如果N
是非負整數,則該函式必須在一行中打印出N
!的值,否則列印“Invalid input”。
裁判測試程式樣例:
#include <stdio.h> void Print_Factorial ( const int N ); int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; }/* 你的程式碼將被嵌在這裡 */
void Print_Factorial ( const int N ) { int n=N; if(n<0) { printf("Invalid input"); return; } int nums[10000]={0}; //建立一個數組用於存放結果 int k=1; //結果的位數,最少為1 int up=0; //進位 nums[0]=1; //初始化個位結果為1 int temp; for(int i=2;i<=n;i++) {for(int j=0;j<k;j++) { temp=nums[j]*i+up; //臨時結果=前階乘結果的某位*i+up nums[j]=temp%10; //臨時結果給位的數 up=temp/10; //看是否需要進位 } while(up!=0) //看最後得到的up是否需要進位 { nums[k]=up%10; //現最高位上的數 up/=10; //up>0則需進位,k++k++; } } for(int i=k-1;i>=0;i--) { printf("%d",nums[i]); //輸出最終結果 } }