數字以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位對應的數字,可...