劍指offer c 數字序列中某位數的數字

2021-10-06 08:58:44 字數 821 閱讀 8588

題目:

數字以0123456789101112131415...的格式序列化到乙個字串序列中。這個字串,第5位是5(從0開始計數),第13位是1,第19位是4。請寫出乙個函式,求任意第n位數。

解題思路:

先確定n的範圍,然後減去前面的範圍,除上位數,(同時取餘位數),求出該範圍內的數,在加上之前的範圍真實數,就是真實要顯示的那個數字。取餘位數後,得到的是顯示第幾位(從左往右,從0開始計數)

參考**:

#include #include #include #include #include #include #include #include #include #include using namespace std;

class solution ;

int find_solution(int index)

}index -= f[w_data-1];

int temp1 = index/w_data; //在某個範圍內真實的數

int temp2 = index%w_data; //要顯示的位數

int real_data = pow(10,w_data-1) + temp1;//求出真實的數

return (find_w(real_data,(w_data-temp2)));//實現位數

}//獲取從右往左第n位,從1開始

int find_w(int origin, int n)

} else

res = origin%10;

return res;}};

int main()

Number Sequence 數字序列

一 杭電原題摘錄 二.題目分析 很容易就能想到遞迴,但是超出記憶體 int fac int a,int b,int n 超出記憶體 因為f n 的值要對7取餘,所以不難想到f n 的值可能存在週期.那我們就去找週期,看是否存在?週期不就是一直重複t個數,那麼我們就說這組數存在週期,且為t.在這個問題...

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

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

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

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