POJ1423 Big Number解題報告

2021-06-17 14:22:16 字數 866 閱讀 2661

_考查點:

數學思維。

_思路:

這個題用模擬的方法肯定會超時的,因為n!(n可以高達10^7),這個階乘是乙個非常大的數,

就算用高精度來存都很恐怖,最多能達到數量級上限千萬位(n為10^7時有65657060位).

既然模擬不行.那麼我們就想想數學方法吧。數學總是能帶給我們驚喜。既然是求位數

那麼就是就這個數以10為底的對數。哎,這麼想就對了,既然是求對數那就簡單了。

由對數的性質可以知道log10(n!) =  log10(1)  +  log10(2)  + ... + long10(n);這麼就可以避免

資料太大造成的麻煩。但是直接這麼寫了提交還是會超時n能高達10^7...多來幾次就tle了。

那麼我們可以事先求出間隔x增量的數的階乘的對數存放在陣列中。比如以一百萬為間隔。

這樣時間複雜度就降下來了。求乙個case最多百萬次迴圈.要更快,也可以以10萬為間隔,但是那個

就要存100個資料,我太懶了,就選的100萬為間隔的了。

_提交情況:

tle一次,為事先打表。

_收穫:

數學是個好東西啊!!!

_ac codes:

#include

#include

double array[11] = ;

int main()

}double sum = array[i];

for (int j = i * 1000000 + 1; j<= m; j++)

int a = (int)sum;

if (1 == m || sum - a > 0)

printf("%d\n", a);

}return 0;

}

poj 1033 Defragment 解題報告

距離從1000處子題,已經過了好些日子了,終於突破20題了,但是還沒有進入前1w 中國的人真多啊 一直在做動態規劃的題,實在是被動態規劃的強大折服。最近開始找些搜尋的題來做,剪那個sticks,一直剪不過tle,於是決定換道題,看網上的推薦說這是一道搜尋題,於是開始切!題意 磁碟整理,按照從第乙個檔...

poj1007 DNA Sorting解題報告

題目要求的是一條dna序列的逆序數,求逆序數可以考慮使用歸併演算法來進行求解。我們來設想這樣乙個場景 相鄰的a b兩塊進行公升序排序,各自都已經是排好序的了,且b排在a右邊。那麼當把b中的某數t放到已排序的數列中,那麼a序列中剩下的數就是比數t要大的,但我們要注意到 在原序列中,由於b序列在a序列右...

poj 1007DNA Sorting解題報告

默默的說真的是水題 題目大意 序列 未排序程度 的乙個計算方式是元素亂序的元素對個數。例如 在單詞序列 daabec 中,因為d大於右邊四個單詞,e大於c,所以計算結果為5。這種計算方法稱為序列的逆序數。序列 aacedgg 逆序數為1 e與d 近似排序,而序列 zwqm 逆序數為6 它是已排序序列...