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

2021-08-19 15:18:30 字數 598 閱讀 8018

題目:

數字按照0123456789101112131415161718192021…的順序排列。第5位(從0開始計數)為5,第13位為1,第19位為4…… 求任意第n位對應的數字。

思路: 從  0~9的10個數是1位數  10~99是兩位數 100~999是三位數  

除了1位數之外 其他n位數 佔據的順序排列的位數都是從 pow(10,n-1)~9*pow(10,n-1)

通過確認目標輸入 對應的位數範圍 和gap  通過gap計算目標數字和偏移值 

#include#include#includeusing namespace std;

int resultofsequence(int n)

i--;

int offset=gap%i;//目標數的偏移值

int start=gap/i + pow(10,i-1); //目標數的起點

//格式轉換 int轉成string 隨機訪問偏移位

stringstream sstr;

sstr<>str;

cout<>target;

cout<<"結果為:"<}

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

題目描述 演算法分析 序列的前10位是0 9,所以第1001位一定在10之後,因此這10個數可以直接跳過。我們再從後面緊跟的序列中找到第991 991 1001 10 位的數字。接下來180位數字是10 99的兩位數。由於991 180,所以第991位所有的兩位數之後。我們再跳過90個兩位數,繼續從...

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注意 本題...