字典序(今日頭條2017秋招真題)

2021-08-07 06:53:47 字數 883 閱讀 8219

給定整數n和m,將1到n的這n個整數按字典序排列之後,求其中的第m個數字。

對於n = 11,m = 4,按字典序排列依次為1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9,因此第4個數字為2。

輸入 輸入僅包含兩個整數n和m。

樣例輸入

11 4

輸出 輸出僅包括一行,即所求排列中的第m個數字。

樣例輸出

2這道題又是一道trie數問題

既然是字典序,那麼很自然,我們可以考慮使用字典樹來實現,但是,這裡並不需要真的生成這個字典樹,而只需要計算對應分支的節點數就行了。

1. 首先從1開始,如果1分支的節點數》m,那麼第m個數肯定是以1開頭,進一步搜尋其子節點,搜尋子節點時不用再搜尋1了,所以是搜尋1分支的第m-1個節點。

2. 如果1分支的節點數

#include

#include

using namespace std;

long

long getcountofstart(long

long start, long

long n)//找到小於n的,以ret開頭的樹的個數

if(n >= start*base )

count += n-start*base+1;

return count;

}long

long getnum(long

long m,long

long n)

else

//當子節點數小於m時,第m個數就要在右邊的節點中尋找子節點,m減掉當前子節點數,結果加1就到了右邊相鄰的節點

}return k;

}int main()

異或(今日頭條2017秋招真題)

題目描述 給定整數m以及n個數字a1,a2,an,將數列a中所有元素兩兩異或,共能得到n n 1 2個結果。請求出這些結果中大於m的有多少個。輸入第一行包含兩個整數n,m。第二行給出n個整數a1,a2,an。輸出輸出僅包括一行,即所求的答案。樣例輸入 3 10 6 5 10 樣例輸出 2解題思路 正...

2017秋招真題 360

題目描述 寫入記憶體1到n之間的n個自然數,記憶體寫入只接受二進位制的形式,所以十進位制表達中除0和1之外的其他值都沒有成功寫入記憶體。所以有多少數字寫入了伺服器的記憶體!輸入輸入中有多組測試資料。每組測試資料在單獨的一行中,為整數n 1 n 109 109 樣例輸入 1020 輸出23 100 正...

2017秋招筆試C 真題

c 伺服器端 2017秋招 b站 1 不用除法和取餘 實現兩個數的除法和取餘操作 2 如何保持會話連線?如何實現負載均衡?實現負載均衡會話保持需要修改嗎?通過什麼方法實現負載均衡?3 linux五種i o模型?c 流 2017秋招 好未來 1 將一句話的單詞進行倒置,標點不倒置。比如 i like ...