統計從1到N中1的數目

2021-06-16 18:32:07 字數 631 閱讀 9640

通過對於n的每一位n進行分析,發現規律

(1) n > 1  (高位+1) *  位數   例如 21200   在百位上出現1的次數 為  (21+1) * 100    100-199  , 1100- 1199 , ... , 21100-21199 (此處只考慮百位上出現1的次數,下同) 

(2) n = 1      高位 *  位數 + 低位 + 1  例如 21111   在百位上出現1的次數 為  (21+1) * 100    100-199  , 1100- 1199 , ... , 21100-21111 (此處只考慮百位上出現1的次數,下同) 

(3) n = 0      高位 *  位數   例如 21000   在百位上出現1的次數 為  21 * 100    100-199  , 1100- 1199 , ... , 20000-20099 (此處只考慮百位上出現1的次數,下同) 

**如下

#includeusing namespace std;

int sum1(int n)

weishu*=10;

} return sum;

}int main(){

int n;

while(cin>>n){

cout<< sum1(n)<

程式設計之美 2 4從1到N中1出現的數目

題目描述 給定乙個十進位制整數n,寫出從1開始到n的所有整數,統計一下其 現所有 1 的個數。例如12,一共有1 10 11 12四個數 現5次1。問 1 寫出乙個函式,返回1到n之間出現1的次數 2 滿足條件f n n 的最大的n是多少。題目解析 思路一 我們用粗暴的方式,要求1的個數,那麼我們就...

計算從1到N中1的出現次數

給定乙個十進位制整數n,求出從1到n的所有整數中出現 1 的個數。例如 n 2,1,2出現了1個 1 n 12,1,2,3,4,5,6,7,8,9,10,11,12。出現了5個 1 最直接的方法就是從1開始遍歷到n,將其中每乙個數中含有 1 的個數加起來,就得到了問題的解。01publiclongc...

統計從1到N的所有整數中出現1的個數

問題 給定乙個十進位制的正整數n,寫下從1開始到n的所有整數,然後數一下其中出現的所有 1 的個數。解 假設n abcde,這裡abcde分別是十進位制數n的各個數字上的數字。例如我們計算百位上出現1的次數,它將會受到三個因素的影響 百位上的數字,百位一下,百位以上的數字。對於2位數來說,個位數出現...