題目:
數字按照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注意 本題...