程式設計之美2 4 1的數目

2021-06-07 01:31:35 字數 1061 閱讀 5744

/*總體思路:先求個位上出現的1的個數,再找十位再找百位。。

先看個位找找規律:

5(05)     1    1

15        2    1,11  

25        3    1,11,21

35        4    1,11,21,31

...325       33   1,11,21,31,41,...,301,311,321

結論:個位上的1的數目s= n / 10 + 1;

再看十位,找找規律:

25        10    10,11,12,13,14,15,16,17,18,19

35        10    10,11,12,13,14,15,16,17,18,19

95        10    10,11,12,13,14,15,16,17,18,19

125       20    10,11,12,13,14,15,16,17,18,19,110,111,112,...,118,119

725       80    10-19,110-119,210-219,310-319,410-419,510-519,610-619,710-719

3225      330   10-19,20-29,...510-519,610-619,...1010-1019,1110-1119,1210-1219,...,3110-3119,3210-3219

結論:十位上的1的數目s = (n / 100 + 1) * 10;

....

將個位上的1的數目看作

(n / 10 + 1) * 1;

(n / 100 + 1 ) * 10; 十位上的

猜想百位上1的數目應該是:

(n / 1000 + 1 ) * 100

特殊情況,當最高位為1時,最高位上1的數目為其餘各位所組成的數加1,如125百位上的1的個數就是25+1=26個

*/

int numberof1in1_n(int n)//從1到n的整數中1出現的次數

return count;

}

程式設計之美 2 4 「1的數目」

擴充套件問題 二進位制數n,從1開始,到n的所有二進位制數,然後數下其中出現的所有 1 的個數。例如 f 1 1 f 10 2 因為01,10共有2個1 f 11 100 因為01,10,11共有4個1 思路 以10110為例,考慮最高位為0時共有幾個1,因為後面4位中1和0出現的概率是相等的,也即...

程式設計之美 2 4 1的數目

package code.beauty.fungame public class countone private static int count1inaint int n return num private static void count1inallint int n system.out...

程式設計之美 2 4 1的數目

這道題其實是做過了的,在中 但是再次做還是相當的糟糕。又看了一遍答案。關鍵 要求每一位上1的個數,其任意一位上1的個數受當前位 高位 低位三方面的影響。注意這三位怎麼求,注意資料型別。注意迴圈條件。include long long sum1s unsigned long long n ifacto...