洛谷1102 A B數對

2021-10-17 12:04:03 字數 1041 閱讀 4137

給出一串數以及乙個數字 c,要求計算出所有 a - b = c 的數對的個數(不同位置的數字一樣的數對算不同的數對)。

對於 75% 的資料,1≤n

≤2000

1 \leq n \leq 2000

1≤n≤20

00對於 100% 的資料,1≤n

≤2×1

05

1 \leq n \leq 2 \times 10^5

1≤n≤2×

105保證所有輸入資料都在 32 位帶符號整數範圍內。

雖然這道題是道水題,思路也比較簡單(雖然我還是沒想出來),但這道題很好的體現了hash表的用途——查詢。

將每個數讀入後對乙個質數取模,按照餘數的不同進行分類,以餘數作為下標,將每個數存入hash表中。

將每個數都放入hash表中後,列舉每個數,將其作為式子a-b=c中的a(我對減法生來不爽,就用的是b),式子移項後可得a-c=b,其中a、c已知。這時將在hash表中查詢a-c的值,若存在,則說明存在滿足式子a-b=c的值b。

#include

#include

#define ll long long

using

namespace std;

const ll p=

1000003

;struct node

hash[p]

;ll n,c,s[p]

,ans;

ll key

(ll x)

ll locate

(ll x)

void

insert

(ll x)

ll query

(ll x)

intmain()

for(

int i=

1;i<=n;i++

) ans+

=query

(s[i]

+c);

printf

("%lld"

,ans)

;return0;

}

洛谷P1102 A B 數對

題目描述 出題是一件痛苦的事情!相同的題目看多了也會有審美疲勞,於是我捨棄了大家所熟悉的 a b problem,改用 a b 了哈哈!好吧,題目是這樣的 給出一串數以及乙個數字 c,要求計算出所有 a b c 的數對的個數 不同位置的數字一樣的數對算不同的數對 輸入格式 輸入共兩行。第一行,兩個整...

洛谷 P1102 A B 數對 題解

鏈結 出題是一件痛苦的事情!相同的題目看多了也會有審美疲勞,於是我捨棄了大家所熟悉的 a b problem,改用 a b 了哈哈!好吧,題目是這樣的 給出一串數以及乙個數字 c cc,要求計算出所有 a b c a b c a b c的數對的個數 不同位置的數字一樣的數對算不同的數對 輸入共兩行。...

洛谷 P1102 A B數對 題解

出題是一件痛苦的事情!題目看多了也有審美疲勞,於是我捨棄了大家所熟悉的 a b problem,改用 a b 了哈哈!好吧,題目是這樣的 給出一串數以及乙個數字 c,要求計算出所有 a b c 的數對的個數。不同位置的數字一樣的數對算不同的數對 第一行包括2個非負整數n和c,中間用空格隔開。第二行有...