計算1至n中數字X出現的次數

2022-03-06 11:45:41 字數 761 閱讀 9431

題目:

給定乙個數n,求出1-n之間的數字有多少個1,例如n=11時結果為4(只有1,10,11含1)

經典問題。

參照程式設計之美分析

程式設計之美上的一道題目,原文分析的方法十分簡單,並且很容易程式實現。分析:

若x = abcde,我們來看百位為1出現的次數,這裡分3種情況討論:

1. 百位為0時,假設x = 45021,可以算出百位為1出現情況:

100~199

1100~1199

...44100~44199

總共是45*100個1

2. 百位為1時,假設x = 45121,可以算出百位為1出現情況:

100~199

1100~1199

...44100~44199

45100~45145

總共是45*100+(45+1)個1

3. 百位大於1時,假設x = 45821,可以算出百位為1出現情況:

100~199

1100~1199

...44100~44199

45100~45199

總共是(45+1)*100個1

於是,我們可以找到這樣乙個規律,對於某一特定的位,該位出現1的次數為:

1. 若該位的值為0,則該位出現1的次數=高位值*該位的進製

2. 若該位的值為1,則該位出現1的次數=高位值*該位的進製+低位值+1

3. 若該位的值大於1,則該位出現1的次數=(高位值+1)*該位的進製

計算1至n中數字X出現的次數

以 n 2593,x 5 為例來解釋如何得到數學公式。從 1 至 2593 中,數字 5 總計出現了 813 次,其中有 259 次出現在個位,260 次出現在十位,294 次出現在百位,0 次出現在千位。現在依次分析這些資料,首先是個位。從 1 至 2590 中,包含了 259 個 10,因此任意...

計算1至n中數字X出現的次數 math

nailperry 一 1的數目 程式設計之美上給出的規律 1.如果第i位 自右至左,從1開始標號 上的數字為0,則第i位可能出現1的次數由更高位決定 若沒有高位,視高位為0 等於更高位數字x當前位數的權重10i 1。2.如果第i位上的數字為1,則第i位上可能出現1的次數不僅受更高位影響,還受低位影...

統計1 N中數字x出現的次數

統計1 n中數字2出現的次數 例 n abcdefg 例 請統計某個給定範圍 l,r 的所有整數中,數字2出現的次數。比如給定範圍 2,22 數字2在數2 現了1次,在數12 現1次,在數20 現1次,在數21 現1次,在數22 現2次,所以數字2在該範圍內一共出現了6次。include using...