網易2018春招筆試程式設計題 nk數對

2021-08-17 22:21:51 字數 1168 閱讀 3411

題目描述:

牛牛以前在老師那裡得到了乙個正整數數對(x, y), 牛牛忘記他們具體是多少了。

但是牛牛記得老師告訴過他x和y均不大於n, 並且x除以y的餘數大於等於k。

牛牛希望你能幫他計算一共有多少個可能的數對。

首先用兩個for迴圈來暴力求解是可以得到結果,但是時間複雜度太高。所以需要從數學的角度分析,尋找新的思路。

1.首先分析數對的右邊的數。x%y的餘數,其餘數的範圍必定為[0—y-1],所以為了滿足餘數大於等於k,這個y必須為k+1或者更大,x%y的餘數才可能出現k。

2.題目明確為正整數數對,分析x%y與其餘數的關係。可以其餘數是迴圈出現的。

對於乙個b, n範圍內的數模b的序列應該是:

0,1,2,...,b-1, 0, 1, 2,..., b-1,...0,1,2,..n%b

比如b為3,n為1-10.

由這個例子,我們可以看出來,1,2,0迴圈出現,完整出現的迴圈有3次,剩下可能有一次不完整的迴圈。

可知,完整迴圈次數為3/10,不完整迴圈的長度為3%10,不管是哪種,都是從1開始的。

#include using namespace std;

int main()

cout << ans << endl;

}return 0;

}

程式分析:

1.for 迴圈中i變數就是數對的右邊的數

2.對於數對的右邊的數為i的這些數對,只需要分析兩種情況,完整迴圈和不完整迴圈

3.分析完整迴圈:迴圈次數為n/i。因為[0—i-1]是餘數的範圍(但實際出現順序為0在結尾),也是迴圈的範圍,排除前k個數(想象從0開始排除),那麼剩下的餘數肯定是大於等於k的。

4.分析不完整迴圈:只有一次,但長度不定。長度為n%i。分析上面的例子,發現其餘數範圍為[1,2,3,,,,n%i],也是實際出現順序。所以排除前k-1個數(和上面不同的是,這裡是從1開始的,所以只需要排除k-1個數),那麼剩下的餘數都是大於等於k的。所以if的判斷條件為n%i>=k,因為這樣剛好最後乙個餘數為k。

網易2018校招筆試程式設計題

小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩台魔法機器可以通過投入x x可以為0 個魔法幣產生更多的魔法幣。魔法機器1 如果投入x個魔法幣,魔法機器會將其變為2x 1個魔法幣 魔法機器2 如果投入x個魔法幣,魔法機器會將其變為2x 2個魔法幣...

網易2018秋招筆試 程式設計題 交錯01串

時間限制 1秒 空間限制 32768k 如果乙個01串任意兩個相鄰位置的字元都是不一樣的,我們就叫這個01串為交錯01串。例如 1 10101 0101010 都是交錯01串。小易現在有乙個01串s,小易想找出乙個最長的連續子串,並且這個子串是乙個交錯01串。小易需要你幫幫忙求出最長的這樣的子串的長...

程式設計 網易2019校招筆試程式設計題

題目 小易有乙個古老的遊戲機,上面有著經典的遊戲俄羅斯方塊。因為它比較古老,所以規則和一般的俄羅斯方塊不同。熒幕上一共有 n 列,每次都會有乙個 1 x 1 的方塊隨機落下,在同一列中,後落下的方塊會疊在先前的方塊之上,當一整行方塊都被佔滿時,這一行會被消去,並得到1分。有一天,小易又開了一局遊戲,...