Attention: 如果喜歡我寫的文章赠尾,歡迎來我的github主頁給star
Github:github.com/MuziJin
本題要求實現(xiàn)一個打印非負(fù)整數(shù)階乘的函數(shù)员辩。
函數(shù)接口定義:
void Print_Factorial ( const int N );
其中N
是用戶傳入的參數(shù),其值不超過1000次氨。如果N
是非負(fù)整數(shù)潜沦,則該函數(shù)必須在一行中打印出N!
的值干花,否則打印“Invalid input”
。
裁判測試程序樣例:
#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
15
輸出樣例:
1307674368000
Code
void Print_Factorial ( const int N )
{
int temp;
int m = 0; //要進的數(shù)
int k = 1; //當(dāng)前結(jié)果總位數(shù)
int fact[3000] = {0};
fact[0] = 1;
if( N>=0)
{
if( N==0 || N==1)
{
temp = 1;
printf("%d", temp);
}
else
{
for(int i=2; i<=N; i++)
{
for( int j=0; j<k; j++)
{
temp = i * fact[j] + m;
fact[j] = temp %10 ;
m = temp / 10 ;
if( m && j==k-1)// 當(dāng)有進位且已經(jīng)處理到最前位時才開拓目標(biāo)數(shù)組的下一位
k++;
}
}
for(int i=k-1; i>=0; i--)
printf("%d", fact[i]);
}
}
else printf("Invalid input");
}
轉(zhuǎn)載請注明出處:github.com/MuziJin