回覆列表
  • 1 # 貓之幽霊

    40000000000可以理解成0~3,0~9,0~9,0~9,0~9,0~9,0~9,0~9,0~9,0~9,0~9這十一個數組。然後隨意合成你要的數吧。別忘了在數字和字串之間的轉換。另外也不用分這麼多段,分成六段就好,0~4,0~99,0~99,0~99,0~99,0~99。別忘了自己寫一個補零函式。如果你是為了管理400億個編號對應的資料,你還要在儲存資料時對資料以分段陣列的形式進行分組。

  • 2 # EndyC

    設n位數中包含的數字1個數為f(n),有:

    f(1)=1

    f(2)=10+10*1

    f(n)=10^(n-1)+10*f(n-1)

    100億位時並沒有算完f(11),到400億結束公式為:10^10+2*f(10)[200億和300億包含的兩個f(10),400億隻有這一個數並不包含數字1]

    這只是數學部分,接下來說語言部分,目前大部分js引擎支援的最大數是2^1024,大概是1.7976931348623157e+308,完全可以表達上述公式計算出來的值,於是設計遞迴函式(手機不方便,虛擬碼隨便寫寫)function recursFun(x){if(x<1)return 0;if(x >1)return Math.pow(10,x-1)+10*recursFun(x-1);else if(1==x)return 1;}

    var result = Math.pow(10,10)+2*recursFun(10);

    結果30000000000

  • 中秋節和大豐收的關聯?
  • 求張靚穎《音樂讓我說》的完整歌詞?