計算1 n之間1的個數

2022-05-28 00:48:13 字數 682 閱讀 6764

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

找規律題,

0-9 1的個數,pow(10,0)+100

0-99 1的個數 pow(10,1)+(pow(10,0)+100)10

0-999 1的個數 pow(10,2)+(pow(10,1)+(pow(10,0)+100)10)10

然後從右到左一次計算1出現的個數,例如21345,

5:1;

4:10 + 41;

3:100 + 320;

1:345+100+1(2010);

2:10000+2((2010+100)* 10 + 1000));

1為特殊情況,如果為21345,不考慮萬位,則千位為1,只有345個,那麼計算0-999的1的個數即可。

public class solution else if(p==1)

level++;

n = n / 10;

}return count;

}int chen(int level)

}

求1 n中1的個數

輸入乙個整數,求1 n這n個數的十進位制表示1的個數。將n的十進位制的每一位單獨拿出討論,每一位的值記為weight。1 個位 假若n 534。534的個位從0 9變化了53次,這53我們記為round。因為weight為4 0。因此第54輪為0 4,因此1出現了count round 1。若wei...

程式設計之美 計算1 N中含1的個數

點我 1位數的情況 在解法二中已經分析過,大於等於1的時候,有1個,小於1就沒有。2位數的情況 n 13,個位數出現的1的次數為2,分別為1和11,十位數出現1的次數為4,分別為10,11,12,13,所以f n 2 4。n 23,個位數出現的1的次數為3,分別為1,11,21,十位數出現1的次數為...

程式設計之美 計算1 N中含1的個數

點我 1位數的情況 在解法二中已經分析過,大於等於1的時候,有1個,小於1就沒有。2位數的情況 n 13,個位數出現的1的次數為2,分別為1和11,十位數出現1的次數為4,分別為10,11,12,13,所以f n 2 4。n 23,個位數出現的1的次數為3,分別為1,11,21,十位數出現1的次數為...