題目描述
演算法分析
序列的前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注意 本題...