給出一串數以及乙個數字 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,中間用空格隔開。第二行有...