思路:這題是程式設計之美上面的一道題,同時也是十分考察觀察力的一道題,對於數字30142:
1. 對於個位上面的2有2>1,所以個位上面1出現的次數為:(3014 + 1) * 1; (如果字首為0,所以要加1)
2. 對於十位上面的4有4>1,同樣有十位上面1出現的次數為:(301 + 1) * 10;
3. 對於百位上面的1有1=1,此時就要考慮了,字首變化範圍為 0~29,字尾變化範圍是0~42,所以此時百位上面1變化的次數為:(30 + 0) * 100 + 43;
4. 對於千位上面的3有3>1,此時千位上面1出現的次數為:(3 + 0) * 1000;
有了上面的分析不難寫出程式,並且可以推廣到k出現的次數的情況:
int count_number_k(int n, intk)
return
result;
}
在從1到n的正數中1出現的次數
題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。我的思路是計算每一位上1會出現在哪些數字中。建乙個陣列a n 放置每一位,從個位到最高位,0 n,這裡n 4。a 0 5,a 1 0,a ...
在從1到n的正數中1出現的次數
int count1in1ton int n return n int countnumber1 int n return count 程式設計之美上的方法 大體的思路是這樣的 假設n abcde,這裡a,b,c,d,e分別是十進位制數n的各個位數上的數字。如 果要計算百位上出現1的次數,它會受到三...
求在從1到n的正數中1出現的次數
題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。問題描述 給定乙個十進位制正整數n,寫下從1開始,到n的所有整數,然後數一下其中出現的所有 1 的個數。例如 n 2,寫下1,2。這樣只出...