美團筆試題一共5題時間為2個小時
-
美團的題難度適中(相對於阿里),有簡單的題,也有難題,都需要考慮一些特殊情況
第一題:
題目: 某學校的期末考試共有n個學生參加,考試科目共有m科。學校將會給一部分學生頒發單科成績優秀獎,獲獎學生需要滿足的條件是某一科的成績是所有學生中最高的或是最高的之一。請問學校應該給多少名學生頒發單科成績優秀獎。 輸入: 輸入第一行包含兩個正整數n和m,分別代表學生人數和考試科目數量。(n,m<=500) 接下來有n行,每行有m個正整數,每個正整數在1-100之間,中間用空格隔開,表示每個學生的m科考試成績。 輸出: 輸出僅包含一個整數,表示獲得單科成績優秀獎的人數 輸入: 5 5 28 35 38 10 19 4 76 72 38 86 96 80 81 17 10 70 64 86 85 10 1 93 19 34 41 輸出:4
第二題:
題目描述:
有這么一段偽代碼
input a,b,m,x
while true:
x=(a*x+b)%m
print(x)
end while
輸出的x由於是在取模意義下的,所以會出現循環。
比如,a=2, b=1, m=5, x=2的時候,輸出的序列將會如下:
0,1,3,2,0,1,3,2,0,1,3,2....
其中:0,1,3,2 稱為最短的循環節。
現在給定a,b,m,x的值,請你計算最短循環節的長度。
輸入
輸入4個數,a,b,m,x
輸出
輸出一個數,最短循環節的長度
樣例輸入
2 1 5 2
樣例輸出
4
提示
1≤a,b,x≤m≤100000 ,a,b,x,m均為正整數
第三題:
題目描述:
數對是數學中一個重要的概念,類似於計算機中的pair,數對的性質如下:
每個數對(x,y)包含兩個實數元素x,y,描述一對數之間的關系。兩個數對比大小將先比較第一個數的大小,如果相同再比較第二個數的大小。
現在,有n個數(兩兩可能相同),他們之間兩兩將會形成n^2個數對(自己和自己也會形成數對)。我們希望知道,第k小的數對是哪一對數,並輸出這一對。
輸入
第一行包含兩個數n,k,含義如題面所示
接下來一行n個整數,空格隔開。
輸出
輸出第k小的數對。格式如(x,y),其中x為數對中第一個數,y為數對中第二個數
樣例輸入
3 4
3 1 2
樣例輸出
(2,1)
提示
n≤100000,1≤k≤n^2,這n個數在int范圍內[-2147483648,2147483647]
樣例解釋
數對一共有9個,分別是: (3,3)(3,1)(3,2)(1,3)(1,1)(1,2)(2,3)(2,1)(2,2)
按從小到大的排序后:(1,1)(1,2)(1,3)(2,1)(2,2)(2,3)(3,1)(3,2)(3,3)
第4個為(2,1)
第四題:
題目描述:
n個數的偽中位數定義為從小到大排序后第⌊(n+1)/2⌋個數。其中,⌊x⌋的意思是x向下取整。
現在,給你n個數,你需要向其中增加最少的數,使得k成為最后這一組數的偽中位數。
請問你需要加入數的最少數。
輸入
輸入第一行包含兩個數n,k,意為原來數的個數和最后的偽中位數。
接下來一行n個數a_i,空格隔開,代表原來的數。
1≤n≤500,1≤a_i≤100000
輸出
輸出一個數,你需要加入數的最少數量。
樣例輸入
4 2
2 3 3 3
樣例輸出
2
提示
樣例解釋:加入1,1后,原數組變為1,1,2,3,3,3,其偽中位數為2。
第五題:
題目描述:
現在有兩個串S和T,你需要從S中取出一個子串,並且從T中取出一個子序列,使得兩個取出來的串一樣。這樣不同的方案有多少?答案對10^9+7取模。子串的意思是在字符串中截取連續一段,比如bc是abcd的子串。
子序列的意思是在字符串中截取不一定連續的幾段(也可以是一段)連在一起,比如ac是abcd的子序列。
注意,在本題中,兩種取法位置不同,但是取出來的字符串是相同的情況算作兩種不同的情況,詳見樣例解釋。
輸入
輸入包含兩個字符串S,T 一行一個字符串
|S|,|T|≤5000
輸出
輸出包含一個數,代表答案對10^9+7取模。
樣例輸入
aaa
aaa
樣例輸出
16
提示
樣例解釋
S有6個子串,T有7個子序列。
S的6個子串:a(1),a(2),a(3),aa(12),aa(23),aaa(123);
T的7個子序列:a(1),a(2),a(3),aa(12),aa(23),aa(13),aaa(123);
可以得知,如果這個相同的串為a,有3×3種取法,如果這個相同的串為aa,有2×3種取法,如果這個相同的串為aaa,有1×1種取法。
總共有16種取法。