劍指offer 數字序列中某一位的數字

2021-09-26 08:58:13 字數 744 閱讀 3529

數字以0123456789101112131415…的格式序列化到乙個字串行中。在這個序列中,第5位(從0開始計數)是5,第13位是1,第19位是4,等等。請寫乙個函式求任意位對應的數字。

主要思路:

舉例分析,比如找第1001位數字,

1)1位數的數值有10個:0~9,數字為10×1=10個,顯然1001>10,跳過這10個數值,在後面找第991(1001-10)位數字。

2)2位數的數值有90個:10~99,數字為90×2=180個,且991>180,繼續在後面找第811(991-180)位數字。

3)3位數的數值有900個:100~999,數字為900×3=2700個,且811<2700,說明第811位數字在位數為3的數值中。由於811=270×3+1,所以第811位是從100開始的第270個數值即370的第二個數字,就是7。

按此規律,可求出其他數字。

解答:

#include#include//得到m位數字總共有多少(1——10;2——90;3——900)

int countofintergers(int digits)

//得到m位數的第乙個數字(1——0;2——10;3——100)

int beginnumber(int digits)

//找到需求的那一位數

int digitatindex(int index,int digits)

return -1;

}int main()

劍指Offer 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從下標0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。意思大概是這麼個意思,但是輪到自己寫的時候總是出錯,不知道為啥,於是改了種方法,就是n為兩位數以上的時...

劍指offer 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從下標0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。示例 1 輸入 n 3輸出 3示例 2 輸入 n 11輸出 0解題思路 用最簡單的方法,依次遍歷,計算...

劍指 Offer數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從下標0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。示例 1 輸入 n 3 輸出 3 示例 2 輸入 n 11 輸出 0 所以,要想求第n位對應的數字,可...