【 OJ 】 HDOJ1018 18年10月30日20:40 [ 17 ]
阿新 • • 發佈:2018-12-18
自己開始的思路感覺並不好.....參考網上人的思路.....堪比變態
此題已經被 AC
/* 首先第一思路就是大數階乘,求出具體數值用陣列儲存,然後sizeof(a)/sizeof(a[0]) 拿到個數,操作記憶體佔用大,時間慢,計算階乘的具體數值會做很多無用功 所以根據網上的思路可以推匯出公式: 任何一個兩位數 例如 99 肯定大於10 小於100 => 10^x-1<= 任意數a(具有x位)<10^x => x-1<= log10(a)<x => x=log10(a)+1 => x= log10(a!) => x=log10(1)+log10(2)+.....log10(a) 題目轉化為了隊log 求和 */ # include<iostream> using namespace std; int main(void) { int n; int N; int index = 0; double sum = 0; cin >> n; while (n--) { cin >> N; for (index = 1; index <= N; ++index) { sum += log10(index); } cout <<(int) (sum +1)<< endl; sum = 0; } system("pause"); return 0; }