一,題目描述
二,問題分析
1.題目意思爲輸入一個整數N 輸入 N!的位數
2.很明顯常規方法無法實現,當N很大時,N!的階乘就無法表示出來
3.考慮數學方法 位數ans = log10(N!) = ∑(1≤i≤n)log(i) ,取整後+1
三,代碼解答
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
//公式:ans = log10(n!) = ∑(1≤i≤n)log(i).
int main() {
int n;
while (cin >> n) {
double res = 0;
while (n) {
res = res + log10((double)n);
n--;
}
cout << (int)res + 1 << endl;;
}
return 0;
}
注意:1.用log10()函數需要引入頭文件#include<cmath>
2.根據函數聲明,其參數要使用duoble類型