8
1 11006: How many 0's? ★★★☆☆ 題題Problem Set Archive with Online Judge 題題11038: How many 0’s? 題題題楊楊楊 題題題題2007 楊 5 楊 15 楊 題題楊楊楊楊楊楊 m 楊 n(m<=n) 楊楊楊楊楊楊楊楊楊楊楊楊楊楊楊楊楊楊楊

11006: How many 0's?

Embed Size (px)

DESCRIPTION

11006: How many 0's?. ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11038: How many 0’s? 解題者: 楊鵬宇 解題日期: 2007 年 5 月 15 日 題意: 寫下題目給的 m 與 n(m

Citation preview

Page 1: 11006: How many 0's?

1

11006: How many 0's? ★★★☆☆ 題組: Problem Set Archive with Online

Judge 題號: 11038: How many 0’s? 解題者:楊鵬宇 解題日期: 2007 年 5 月 15 日 題意:寫下題目給的m與 n(m<=n) 之間所有的十進位整數,總共會出現幾個零呢?

Page 2: 11006: How many 0's?

2

題意範例:

Page 3: 11006: How many 0's?

3

解法:從每個位數分別會出現 0 的排列組合來計算,求出總共會出現 0 的次數,再加其總合加總,就可得出 0~n 所出現的 0 的總數。但需注意如果給定的數字內含有 0 ,則先對數字做處理,將數字拆成兩部份先行計算 (像是4301 便將 4299 與 300,301 分開計算 )。

等到算出題目所給的兩個數字所含的 0 後,相減即可得解。

Page 4: 11006: How many 0's?

4

解法範例:以 4321 為例,示範解法如下:求右邊數來第一位數為 0 時,在 4321之下會出現的排列組合方式來計算會出現的 0 的個數,也就是10,20,30,~4310,4320 ,有 432 個

Page 5: 11006: How many 0's?

5

解法範例 (cont):接著求右邊數來第二位數為 0 時,在 4321 之下會出現的排列組合方式來計算會出現的 0 的個數,此時因為” 0” 已經計算過,所以第一位數我們以 1~9 計算,所計算的形態為101,102,103~201,202,203~4209,4301 ,有 43*9=387 個。

Page 6: 11006: How many 0's?

6

解法範例 (cont):最後求右邊數來第三位數為 0 時,在 4321 之下會出現的排列組合方式來計算會出現的 0 的個數,所計算的形態為1001,1002~4020,4021 有3*99+1*21=318 個。 (最左邊一位不需要計算,因為其為 0 的部份已經被算過了 )

Page 7: 11006: How many 0's?

7

解法範例 (cont):如果所求數為 4021 ,且最後求右邊數來第三位數為 0 時,在4021 之下會出現的排列組合方式來計算會出現的 0 的個數,所計算的形態為1001,1002~3999 和 4000~4021 。

Page 8: 11006: How many 0's?

8

討論: (1) 時間複雜度為 O(nlogn) 。