31 整數中出現1的次數

2021-08-15 13:37:19 字數 531 閱讀 2065

題目:求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。

思路: 程式設計之美上給出的規律:

取第  i  位左邊(高位)的數字,乘以  10 i−1 ,得到基礎值  a 。

取第 i 位數字,計算修正值:

如果大於 x,則結果為 a+ 10 i−1 。

如果小於 x,則結果為 a 。

如果等 x,則取第 i 位右邊(低位)數字,設為 b ,最後結果為 a+b+1 。

相應的**非常簡單,效率也非常高,時間複雜度只有 o( log 10 n) 。

public int numberof1between1andn_solution(int n) 

return total;

}

31 整數中1出現的次數

一 題目描述 求出任意非負整數區間中1出現的次數 從1 到 n 中1出現的次數 如1 13中包含1的數字有1 10 11 12 13因此共出現6次 二 思路分析 暴力解法,對1 13中的每個數k,從個位開始,逐位判斷是否是1 c 實現 class solution k k 10 遍歷數字的每一位 r...

31 整數中1出現的次數(從1到整數n)

題目描述 求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。我的方法...

31 從 1 到 n 整數中 1 出現的次數

求出 1 13 的整數中1出現的次數,並算出 100 1300 的整數中1出現的次數?為此他特別數了一下 1 13 中包含1的數字有 1 10 11 12 13 因此共出現 6 次,但是對於後面問題他就沒轍了。acmer 希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中 1 出現...