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

2021-08-07 11:39:47 字數 1000 閱讀 8782

題目描述

給定整數m以及n個數字a1, a2, …, an,將數列a中所有元素兩兩異或,共能得到n(n-1)/2個結果。請求出這些結果中大於m的有多少個。

輸入第一行包含兩個整數n, m。

第二行給出n個整數a1, a2, …, an。

輸出輸出僅包括一行,即所求的答案。

樣例輸入

3 10

6 5 10

樣例輸出

2解題思路:正解就是用字典樹,如果不懂的話,這一題先別做,找個部落格先搞懂字典樹是什麼。然後每個節點應當設定乙個cnt在插入節點建樹的時候記錄根節點到此的字首的數量。然後查詢的時候,設a^b>m

(1)m當前位為1,a當前位為0,那麼b必須為1

(2)m當前位為1,a當前位為1,那麼b必須為0

(3)m當前位為0,a當前位為0,那麼ans加上以b為1結尾的字首的數量,然後以b為0繼續往下遞迴。

(4)m當前位為0,a當前位為1,那麼ans加上以b為0結尾的字首的數量,然後以b為1繼續往下遞迴。

ac**

#include #include #include # define f(i,m,n) for(int i=m; i<=n; i++)

# define sf(x) scanf("%d", &x)

using namespace std;

typedef long long int ll;

int n, m, a[200010], bit[20];

ll ans;

struct node;

node* new()

void insert(node * root, int cur, int num)

else

} else

else }}

void query(node * root, int cur, int num)

else

else }}

int main()

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

給定整數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這道題...

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 ...