通過對於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位數來說,個位數出現...