· 計算階乘n!是一件可怕的事情,因為當n並不是很大時,n!將是乙個很大的值。例如13! = 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出
詳細描述:
· 介面說明
原型:void
calcnn(int
n, char *pout)
輸入引數:
int
n 需要計算的階乘數
輸出引數:
char *pout
結算結果,記憶體由呼叫者負責管理
返回值:無
限制:無
舉例:
涉及知識點:
· 數字處理
效能要求:
· 無
我自己編寫的**是:
void calcnn(int n, char *pout)
for(int i = 1; i <= n; ++i)
res *= (long long)i;
sprintf_s(pout,1000,"%lld",res);
return;
}
可是上傳之後總是提示 3 個測試用例就通過了 2 個,請教各位大神,這個到底問題在**???我自己跑測試用例的時候明明沒有問題啊?
後來從網上找到一段**,是正確的:
void calcnn(int n, char *pout)
int i = 0;
int j = 0;
int k = 0;
int carry = 0; //記錄進製
int length = 1; //記錄陣列長度
int temp = 0; //臨時變數
int a[1000] = ; //臨時整型陣列
a[0] = 1;
for(i = 2; i <= n; ++i) //控制階乘數
while(carry) //最後一位進製數可能大於10
}for(i = length - 1; i >= 0; i--) //儲存字元陣列
pout[k] = '\0';
return;
}
可怕的階乘
計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...
可怕的階乘
計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...
OJ 系列之可怕的n的階乘
計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...