網易校招 數對 數學

2021-10-02 10:35:33 字數 1353 閱讀 6446

題目描述

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

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

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

輸入描述:

輸入包括兩個正整數n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。

輸出描述:

對於每個測試用例, 輸出乙個正整數表示可能的數對數量。

輸入

5 2
輸出

7
說明

滿足條件的數對有(2,3),(2,4),(2,5),(3,4),(3,5),(4,5),(5,3)

暴力巢狀兩重迴圈,複雜度太高,105的資料範圍肯定是過不去,找規律把前面的數比後面的數小的部分給先算出來,只迴圈後面數比前面數小的情況,試一試,時間也過不去,那只能從數學上找一找規律了;

首先說這個餘數,假設這個數對是(x,y);那麼要保證x%y >= k 那麼必然 y要大於等於 k + 1 ;

下面對每乙個確定的y,來看在1-n範圍內的 x。在這個範圍內開始取餘數,當然 在範圍足夠大的情況下,餘數肯定是有規律的迴圈出現的(1,2,3, … , y-1 ,0);

那麼他會這麼迴圈多少次呢?他會迴圈(n / y)次;每次迴圈有多少符合條件的呢?會有(y - k)個符合條件(因為要求的是 x % y >= k, 就是說餘數等於k的是包含在內的,我們把0看作是每次餘數迴圈的第乙個,這樣如果k是2,我們減去k就是減去了餘數是0, 1這兩個不符合條件的)

然後再看還可能會有不夠一次迴圈的情況出現,那麼不夠一次迴圈,他剩下了多少個呢?剩下了(n % k)個,有多少個不符合條件的呢,有(k - 1)個,剛才是把0放到最上面計算了,但是現在沒有那個0了,所以少了乙個

**如下:

#include

#include

#include

#include

using

namespace std;

intmain()

for(

int i = k +

1; i <= n; i ++

) cout << ans << endl;

return0;

}

2017校招 數列

題目描述 牛牛的作業薄上有乙個長度為 n 的排列 a,這個排列包含了從1到n的n個數,但是因為一些原因,其中有一些位置 不超過 10 個 看不清了,但是牛牛記得這個數列順序對的數量是 k,順序對是指滿足 i j 且 a i a j 的對數,請幫助牛牛計算出,符合這個要求的合法排列的數目。輸入描述 每...

高職單招數學公式大全,高職單招數學重點公式

高職單招數學公式大全 一 解不等式 1 一元一次不等式 ax b ax b x b a a 0 x0,x1,x2是對應一元二次方程的兩根 判別式 ax bx c 0,解集 當 0時,當 0,當 0,解集為r。判別式 ax bx c 0,解集 當 0時,x x10 1 ax b c ax b c或ax...

網易校招面試

一面 偏向基礎 1 實習經驗。2 網路方面 wait和sleep的區別 sleep指執行緒被呼叫時,佔著cpu不工作,形象地說明為 佔著cpu睡覺 此時,系統的cpu部分資源被占用,其他執行緒無法進入,會增加時間限制。wait指執行緒處於進入等待狀態,形象地說明為 等待使用cpu 此時執行緒不占用任...