單項選擇題
- 箱子里有20個紅球,18個白球,逐一隨機抽取球,問整個過程中箱外白球至少有一次和箱外紅球相等的概率。
- 求f(x)=x-sinx的零點個數
多項選擇題
- 假設在單核無超線程CPU場景下執行如下代碼「x=x+1,y=y+x」,有三個線程分別執行這段代碼,在所有線程開始前,假設有2個變量x,y,x和y都被初始化為1,x和y值會且只會被這三個線程修改,線程隨時會被搶占,設該代碼均為原子的,則可能得到的結果?
填空題
- 有一台機器,可批量輸入單詞,會返回其翻譯值,但是不知道對應關系,現有1000個單詞,問最少需要()次才可以確定它們的翻譯。
- 幼兒園阿姨買了很多糖果,讓6位小朋友早上自己分糖果,第一個先分成相等6堆,結果發現多出來1顆,於是他吃了一顆然后拿走一堆,剩下五堆;第二個小朋友把五堆合在一起,又分了6堆,結果發現又多了一個,於是他也吃了一顆拿走一堆,剩下的亦如此。問阿姨至少買了多少顆糖。
編程題
-
題目描述:
小包有一個紀念日,他特別喜歡這個日子,於是把它以"DD-MM-YYYY" (如:31-01-2020,代表2020年1月31日) 的格式記錄了下來。但小包不想被別人知道這個日子,於是他將這個日子與很多別的日子寫在一起,且該日子的出現次數最多。
小包不小心忘記了紀念日到底是哪天,所以小包現在需要從之前的記錄中找到這個紀念日。輸入描述:
一行一個字符串,其中只包含數字和字符"-",字符串長度不超過10^5。
2001 <= YYYY <= 2020
01<=MM<=12
DD滿足每個月份的日期數,需要考慮閏年的2月
MM和DD不夠兩位數時會填充前導0,如2020年1月1日會寫成01-01-2020而不是1-1-2020。
輸入保證一定存在一個符合要求的合法的日期,且保證一定存在一個日期出現次數嚴格大於別的日期出現次數。輸出描述:
紀念日日期,以DD- MM-YYYY"的格式。
示例1:
輸入:20-12-2030-12-2020
輸出:30-12-2020
說明:符合條件的日期只有30-12-2020這一個。注意數據中的20-12-2030年份超出了2001 <= YYYY <= 2020范圍,因此不計算在內。
-
題目描述:
字節跳動有很多個機房,每個機房可能會有很多個網段(如 10.1.2.0/24),網段之間會有包含關系,當出現包含關系時,以小的網段為准。如機房1對應網段10.1.0.0/16,機房2對應網段10.1.2.0/24,那么現在有一個IP 10.1.2.3,其應當歸屬於機房2。
公司內我們經常會遇到一個場景:要查詢一個IP所在的機房。請你寫一個程序,根據輸入的網段信息和所需查詢的IP給出所在的機房。為了簡化問題,在這里我們認為所有IP都是可分配的,即不考慮網段地址和廣播地址,將這兩種地址也認為是可分配地址。
輸入描述:
第一行包含兩個整數n和m。隨后n行,每行有兩部分組成,第一部分是機房編號,第二部分是網段信息,格式如下:
idc net
隨后m行,每行是一個IP,表示需要查詢的IP。
保證所有的網段以及IP都為IPV4格式,不存在IPV6 的輸入數據。
要注意,輸入可能存在一個大網段被多個小網段切分完畢的情況。數據范圍:
對於30%的數據:1<=n<=10、1<=m<=100;
對於60%的數據,1<=n<=1000、1<=m<=5000;
對於100%的數據,1<=n<=5000、1<=m<=50000。輸出描述:
輸出一共有m行,每行為一個整數,代表第Mi行IP對應的機房編號。
如果所輸入的IP沒有找到對應的網段信息,就輸出-1。示例1:
輸入:
4 4 1 10.1.2.0/24 2 10.1.0.0/16 1 10.1.5.0/24 2 10.1.2.128/125 10.1.2.3 10.1.2.129 10.3.2.1 10.1.5.2
輸出:
1 2 -1 1
-
題目描述:
兩姐妹小蔓和小玉玩抽牌游戲:一共n張牌,兩人輪流抽排,先手者的第一次抽可以抽任意張但不可抽完,以后每次抽都只能抽取不超過上一次抽牌數的兩倍(不可不抽)。誰先抽完牌誰贏(沒得抽的算輸)。由姐姐小蔓先抽。假設該游戲會進行t輪,每輪重新給出新的n。請問先手的姐姐小蔓一共能贏其中的多少輪呢?(注:兩姐妹冰雪聰明,都會做出對自己最優的策略)
輸入描述:
第一行,一個數字t
接下來t行,每行一個數字,n輸出描述:
一個數字x,代表姐姐小蔓贏得輪數
示例1:
輸入:
2 4 5
輸出:1
說明:
2<=n<=1e9
30%的數據(1<=t<=10^3)
60%的數據(1<=t<=10^5)
100%的數據(1<=t<=10^6)
-
題目描述:
我們在使用Tensorflow等編寫神經網絡時,為了使代碼邏輯清晰,可能會造成運行時的低效。小熊寫出了如下的計算式:
(p0-(p1 /(p0 + (p3-p4))))+ (p2*(p1 /(p0 + (p3- p4))
在Tensorflow中可以表示為如下圖一,其中p1/ (p0 + (p3 - p4))計算了兩次。還好Tensorlfow提供的XL A(Accelerated Linear Algebra)對此進行了優化,只需計算一次,計算流程被優化為如下圖二形式。
小熊露出了滿意的笑容的同時,開始思考這個過程是怎么完成的。他已經把這個問題簡化,他使用前綴表示法來表示這些計算式,並限定操作符於{+,-, *,/},操作數為單個小寫字母。可描述如下:
E in{a, b,...Z}
f in{t,-,*k,/}
F= f(E, E)
F= f(E, F)令上述表達式中p0=a, p1=b, p2=c, p3=d, p4=e,前綴表示法可表示為:
+(-(a,/(b,+(a,-(d,e)))),*(c,/(b,+(a,-(d,e)))))
他希望能將這個表達式的計算節點優化到最少,能不能幫他寫個程序來完成這個任務?
對於每個表達式,將其計算節點優化到最少。並將優化的子表達式以一個數字表示,這個數字指向等於此子表達式的根節點的序號。節點的序號從1開始,按前序遍歷分配,如果是重復節點則不分配編號。如"a+a"可轉換為前綴表達式"+(a,a)",第二個"a"發現第一個"a"作為節點(編號2)已經出現過,因此可優化為"+(a,2)",2表示指向編號為2的節點。而在"+(-(a,/(b,+(a,-(d,e)))),(c,/(b,+(a,-(d,e)))))"中,"a"和"/(b,+(a,-(d,e)))"都是重復的, 其中a第一次出現的節點編號為3,"/(b,+(a,-(d,e)))"第一 次出現的根節點"/"編號為4,因此可以優化為"+(-(a,/(b,+(3,-(d,f)))),*(c,4))"。
輸入描述:
第一行包含一個數字c,表示將要處理的表達式行數,不超過200行。接下來的c行每行包含一個表達式,表達式的形式由上述給出(已轉換為前綴形式,無空格,有括號)。最多包含10000個節點。
輸出描述:
對於每個表達式,輸出按說明中優化后的表達式。
示例1:
轉載說明
本文首先發布於個人博客上,轉載請注入聲明。