求出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的次數為...