題目:
數字以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個兩位數,繼續從...