計算1到n的數字中1的出現的次數

2021-07-13 19:33:57 字數 708 閱讀 6423

主要思路:計算數字每一位出現1的次數,並相加,得到該數字中1出現的次數。

例如:1304中,個位出現1的次數,是131次,即1304/10 + 1 = 131;十位出現1的次數 (1304/100)*10  = 130;百位出現1的次數 (1304/1000 + 1)*100 = 200 ;千位出現1的次數( 1304/10000)*1000+1+1304-int(1304/1000)*1000 = 305 總計766;

總結一下,計算數字n中1的個數,得到以下規律:從個位開始,對每一位數字進行處理,先計算對10取餘的餘數rem,計算除以10以後的數字tmp,如果餘數為0,則該位為1的數字個數為 base*tmp ;餘數為1,該位為1的數字個數為n-int(n/base)*base +1 + tmp*base;base在每計算完一位數字後,乘以10,**如下:

// 計算1的個數.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

using namespace std;

int getnum1(int n)

else if(rem == 1)

else

num += (tmp+1)*base;

base *= 10; }

return num;

}int _tmain(int argc, _tchar* argv)

計算從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的個數

mark n為正整數,計算從1到n的所有整數中包含數字1的個數。比如,n 10,從1,2.10,包含有2個數字1。相信很多人都能立刻得出以下的解法 for n n 這是最直接的解法,但遺憾的是,時間複雜程度為o n logn 因為還需要迴圈判斷當前的n的各位數,該判斷的時間複雜程度為o logn 接...

計算1至n中數字X出現的次數

以 n 2593,x 5 為例來解釋如何得到數學公式。從 1 至 2593 中,數字 5 總計出現了 813 次,其中有 259 次出現在個位,260 次出現在十位,294 次出現在百位,0 次出現在千位。現在依次分析這些資料,首先是個位。從 1 至 2590 中,包含了 259 個 10,因此任意...