91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lintcode3 Digit Counts solution 題解

發布時間:2020-07-22 00:01:01 來源:網絡 閱讀:282 作者:coderer 欄目:軟件技術

【題目描述】

Count the number of k's between 0 and n. k can be 0 - 9.

計算數字k在0到n中的出現的次數,k可能是0~9的一個值。

【題目鏈接】

http://www.lintcode.com/en/problem/digit-counts/

【題目解析】

方法一: Brute Force, 0到n個數挨個算過去。最大的問題就是效率,當n非常大時,就需要很長的運行時間。

方法二:當某一位的數字小于i時,那么該位出現i的次數為:更高位數字x當前位數;當某一位的數字等于i時,那么該位出現i的次數為:更高位數字x當前位數+低位數字+1;當某一位的數字大于i時,那么該位出現i的次數為:(更高位數字+1)x當前位數

假設一個5位數N=abcde,我們現在來考慮百位上出現2的次數,即,從0到abcde的數中, 有多少個數的百位上是2。分析完它,就可以用同樣的方法去計算個位,十位,千位, 萬位等各個位上出現2的次數。

當百位c為0時,比如說12013,0到12013中哪些數的百位會出現2?我們從小的數起, 200~299, 1200~1299, 2200~2299, … , 11200~11299, 也就是固定低3位為200~299,

然后高位依次從0到11,共12個。再往下12200~12299 已經大于12013,因此不再往下。所以,當百位為0時,百位出現2的次數只由更高位決定, 等于更高位數字(12)x當前位數(100)=1200個。

當百位c為1時,比如說12113。分析同上,并且和上面的情況一模一樣。 最大也只能到11200~11299,所以百位出現2的次數也是1200個。

上面兩步綜合起來,可以得到以下結論:

當某一位的數字小于2時,那么該位出現2的次數為:更高位數字x當前位數

當百位c為2時,比如說12213。那么,我們還是有200~299, 1200~1299, 2200~2299, … , 11200~11299這1200個數,他們的百位為2。但同時,還有一部分12200~12213, 共14個(低位數字+1)。所以,當百位數字為2時, 百位出現2的次數既受高位影響也受低位影響,結論如下:

當某一位的數字等于2時,那么該位出現2的次數為:更高位數字x當前位數+低位數字+1

當百位c大于2時,比如說12313,那么固定低3位為200~299,高位依次可以從0到12, 這一次就把12200~12299也包含了,同時也沒低位什么事情。因此出現2的次數是: (更高位數字+1)x當前位數。結論如下:

當某一位的數字大于2時,那么該位出現2的次數為:(更高位數字+1)x當前位數

【參考答案】

http://www.jiuzhang.com/solutions/digit-counts/


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

多伦县| 容城县| 株洲市| 文化| 布尔津县| 汉沽区| 安岳县| 县级市| 江安县| 贵溪市| 伊宁市| 上蔡县| 晋宁县| 鸡西市| 江津市| 通道| 无锡市| 永顺县| 九寨沟县| 阜新| 时尚| 东乌| 酉阳| 页游| 桃园市| 馆陶县| 宣武区| 兰坪| 澄江县| 武冈市| 玉山县| 芮城县| 平利县| 大新县| 灌南县| 历史| 罗山县| 吉林省| 阳朔县| 阳城县| 资兴市|