- 題目連結: https://nanti.jisuanke.com/t/A2221
- 題意 :輸出一個n,滿足n!的位數 >= 10000
- 思路 :這裡涉及到一個知識點,x的位數 n = log10(x) + 1。當然是向下取整。是以隻要模拟就可以了。
- 代碼:
#include "bits/stdc++.h"
#define fori(i,l,u) for(int i = l;i < u;i++)
#define forj(j,l,u) for(int j = l;j < u;j++)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn = 1e5;
int main(int argc, char const *argv[]) {
double x = 0;
for (int i = 1;; i++) {
x += log10(i);
if (x >= 9999) {
cout<<i<<endl;
break;
}
}
return 0;
}
-
反思 :
(1)判斷一個正整數的位數時,隻有大一剛學c語言的孩子才會不停地模10. 隻需要 log10(x)+1即可。
(2)看到階乘時,數位肯定很大,第一反應就是取對數。再結合定理,很簡單做出來。