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

2021-08-21 08:41:46 字數 713 閱讀 4703

題目描述

演算法分析

序列的前10位是0~9,所以第1001位一定在10之後,因此這10個數可以直接跳過。我們再從後面緊跟的序列中找到第991(991=1001-10)位的數字。 

接下來180位數字是10~99的兩位數。由於991>180,所以第991位所有的兩位數之後。我們再跳過90個兩位數,繼續從後面找881(881=991-180)位。 

接下來的2700位是900個100~999的三位數中的一位。由於881<2700,所以第881位是某個三位數中的一位。由於881=270+1,這意味著第881位是從100開始的第270個數字370的中間位,也就是7 。

提交**:

class solution 

} int digitatindexcore(int index, int digit)

int countofinteger(int digit)

int beginnumber(int digit)

};

測試**:

// ********************測試**********************

void test(const char* testname, int inputindex, int expectedoutput)

int main()

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

題目 數字按照0123456789101112131415161718192021 的順序排列。第5位 從0開始計數 為5,第13位為1,第19位為4 求任意第n位對應的數字。思路 從 0 9的10個數是1位數 10 99是兩位數 100 999是三位數 除了1位數之外 其他n位數 佔據的順序排列的...

44 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。最常規的做法 從0開始對每個數字求位數個數並累加,直至n位於累加的範圍內,由此再具體求第n位對應的數字。常...

44 數字序列中某一位的數字

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