XDTIC2019招新筆試題 官方解答

2022-07-27 17:54:10 字數 4155 閱讀 8345

[1] 小宗學長正在努力學習數論,他寫下了乙個奇怪的算式:

\[2019^}}}

\]算式的結果一定很大,所以他只讓你求出這個數的後三位,聰明的你能幫幫小宗學長嗎?

[3] \(dyx\)學長帶著2顆雞蛋爬上了一棟100層的大樓,現在已知乙個雞蛋從第 \(k\) 層及以上的樓層落下來會摔破,在第 \(k\) 層以下的樓層落下則不會摔破。他想知道在最壞情況下,最少扔多少次雞蛋才能確定 \(k\) 的大小。

[4] 一群吉祥物表演雜技走鋼絲,鋼絲長50公尺,從東向西看,吉祥物們分別分布在鋼絲的\(4\)公尺、\(17\)公尺、\(19\)公尺、\(28\)公尺、\(44\)公尺處。表演開始時,吉祥物們同時以 \(1m/s\) 的速度向左或向右走,兩隻吉祥物相遇時,則同時掉頭往反方向走,走到鋼絲盡頭則被熱氣球接走。考慮所有情況,最晚被接走的吉祥物在鋼絲上停留的最長時間可能是多少?對於一般情況,給定 \(n\) 只吉祥物的初始位置座標 \(x_1, x_2, x_3, \dots, x_n\) ,吉祥物被接走的最早和最晚時刻分別在什麼時候?

[5] 某高校舉辦三**書大賽,數學系一男生浪漫的寫道:

高斯拿走了我的尺規 / 我只好 / 徒手為你畫眉

現在假設你高冷的數學女神給你乙個圓規,並在紙上畫了兩個點 \(a\) 和 \(b\) ,你能想辦法只用圓規作出線段 \(ab\) 的中點 \(c\) ,博她開心一笑嗎?

[6] 俱樂部主席箱箱學長最近很想玩遊戲,於是他決定和你一起玩,遊戲是這樣的:他帶來了一堆糖果,兩個人輪流從其中拿走一定數量的糖果,拿走最後所有糖果的人為贏家,不過得遵循如下規則:

現在讓你開始先拿糖果,如果你贏了就能獲得全部糖果,輸了的話箱箱會收回他的全部糖果。

如果桌上擺著 \(13\) 顆糖果,你會來嘗試挑戰嗎?如果糖果數量為任意正整數 \(n\),你能想出贏得全部糖果的必勝方案嗎?

[7] 好奇的周隊發現了乙個神奇的\(22\)位數,它的個位數是\(7\)。當她用\(7\)去乘這個\(22\)位數時,發現它的積仍然是個\(22\)位數,只是個位數的\(7\)移到了第一位,其餘\(21\)個數字的排列順序還是原來的樣子。請問這個神奇的\(22\)位數是多少?

\(abcdefghijklmnopqrstu7×7=7abcdefghijklmnopqrstu\)

[8] tic裡有位大佬,每次在群裡出現時所有人都會驚呼:「zk大佬來水群了!!!」,但是wzk是乙個非常低調的大佬,他不希望群裡一堆菜雞吹捧自己。於是他以大佬的身份宣布凡是在群裡討論wzk的人(每次提到wzk必是一句完整的「wzk!wzk!wzknb!」)都會被他用小本本記住。那麼問題來了,wzk又是怎麼快速察覺到有人討論他呢?(此題假設tic群裡所有的話都是由字母和符號構成)

請寫出用計算機快速判斷是否討論了wzk的方法。

例如:判斷wzkwzk!!wzawzk!wzk!nbwzk!!wzk!wzk!wzk!wzknb兩句話中是否談及wzk(計算機判斷字母或者符號是否相同只能乙個乙個對比)

\[099^ = (100-1)^ \equiv 1 \text 1000\\

2019^ \equiv 1 \text 1000

\]​ 現在問題轉化為求 \(2018^}}\) 對 50 取餘的結果

筆算過程:

19的冪的後三位數週期是50,2018的冪模50週期是4。

2017模4等於1,從1到2016那些數都沒用。

19的18次方模1000等於841,這就是答案。

**實現:

尤拉定理降冪公式 當\(b \ge \varphi (c)\) 時, \(a^b \% c = a^ \% c\)

遞迴計算得到結果

typedef long long ll;

const int maxn = 3000;

int pri[maxn], tot;

bool vis[maxn];

int phi[maxn];

// 尤拉線性篩

void getphi(int n)

for(int j=1;j<=tot && i*pri[j]<=n;j++) else }}

}// 快速冪求 a^n % p

ll powmod(ll a, ll n, ll p)

return res;

}ll f(ll a, ll p)

// getphi(2019)

// f(2019, 1000) ==> 841

​ 分為 \(1\over7\),\(2\over7\) 和 \(4\over7\) 三部分。

方法一:

找規律

設 \(f[n]\) 表示 \(n\) 層樓,最少扔雞蛋次數。

\(f[1] = 1\)

\(f[2] = 2, f[3] = 2\)

$ f[4] = 3, f[5] = 3, f[6] = 3$

$ f[7] = 4,f[8] = 4 ,f[9] = 4 ,f[10] = 4$

\(\dots\)

於是 \(f[100] = 14\)

方法二:

設 \(f[n][k]\) 表示 \(n\) 層樓,\(k\) 個雞蛋情況下找到答案的最少扔雞蛋次數。

顯然,只有乙個雞蛋時,必須從低層往高層逐層試驗,有

\[f[n][1] = n

\]有兩個雞蛋時,第一次先從某一層 \(i\) 扔下,如果碎了,就只剩乙個雞蛋,此時答案為 \(1 + f[i-1][1]\);

沒有碎的話,問題相當於求解 \(f[n-i][2]\) 。最壞情況下,我們要取兩者的最大值為試驗次數。

最優解為 \(i\) 取 1~100 所有嘗試的最小值。

所以\[f[n][2] = min(f[n][2], 1+max(f[i-1][1], f[n-i][2]))\]即

\[f[n][2] = min(f[n][2], 1+max(i-1, f[n-i][2]))

\]\(f[0][2] = 0\) , \(f[1][2] = 1\) , \(f[2][2] = 1\) ,… ,遞推得到\(f[100][2]\) 。

​ 斐波那契博弈,當糖果數量為斐波那契數時,先手必敗。

\[\begin

& fib[0] = 0, fib[1] = 1\\

& fib[n] = fib[n-1] + fib[n-2], n>=2

\end

\]​ 證明略。

​ 由低位往高位計算。

​ 答案:1014492753623188405797 * 7 = 7101449275362318840579

ans = '7' # 結果

add = 0 # 進製

now = 7 # 當前位

for i in range(1, 22) :

now = now*7 + add

add = now // 10

now = now % 10

ans = str(now) + ans

res = ('7'+ans)[0:22]

if int(ans)*7 == int(res) :

print('%s * 7 = %s' % (ans, res))

面試得到的新方法:

\[(10*x + 7)*7 = 7*10^+x

\]解得

\[x = \frac-49} = 101449275362318840579

\]所以

\[ans = 10*x + 7 = 1014492753623188405797

\]​ 字串匹配,kmp演算法/字串雜湊

(end)

位元組跳動2019屆校招筆試題

1.世界盃開幕式會在球場c舉行,球場c的球迷看台可以容納m n個球迷。在球場售票完成後,現官方想統計此次開幕式一共有多少個球隊球迷群體,最大的球隊球迷群體有多少人。經調研發現,球迷群體在選座時有以下特性 同球隊的球迷群體會選擇相鄰座位,不同球隊的球迷群體會選擇不相鄰的座位 註解 相鄰包括前後相鄰,左...

多益網路2019秋招筆試題

1 雜湊雜湊值的計算平均查詢長度 雜湊表的構造方法 4 除留餘數法 假設雜湊表長為 m,p為小於等於 m 的 最大數數,則雜湊 函式為 h k k p 5 偽隨機數為 採用乙個偽隨機函式作為雜湊函式,即 h key random key 雜湊表處理衝突的方法 1 開放定址法 2 再雜湊法 3 鏈位址...

去哪兒網2019秋招筆試題

1.題目描述 給出乙個由 100,100 之間整數組成的陣列,求其相加和最大的連續子陣列 輸入 乙個連續整數組成的陣列 輸出 子陣列相加的最大值 樣例輸入 1 2 3 2 4 6 樣例輸出 72.題目描述 騎士只能在3x2的格仔中以對角線的形式走,給定棋盤的大小為8x8,題目輸入起點和終點,求騎士從...