洛谷-P1102 A-B 數對
阿新 • • 發佈:2020-12-19
洛谷-P1102 A-B 數對
題目描述
出題是一件痛苦的事情!
相同的題目看多了也會有審美疲勞,於是我捨棄了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!
好吧,題目是這樣的:給出一串數以及一個數字 \(C\),要求計算出所有 \(A - B = C\) 的數對的個數(不同位置的數字一樣的數對算不同的數對)。
輸入格式
輸入共兩行。
第一行,兩個整數 \(N, C\)。
第二行,\(N\) 個整數,作為要求處理的那串數。
輸出格式
一行,表示該串數中包含的滿足 \(A - B = C\) 的數對的個數。
輸入輸出樣例
輸入 #1
4 1
1 1 2 3
輸出 #1
3
說明/提示
對於 \(75\%\) 的資料,\(1 \leq N \leq 2000\)。
對於 \(100\%\) 的資料,\(1 \leq N \leq 2 \times 10^5\)。
保證所有輸入資料都在 \(32\) 位帶符號整數範圍內。
2017/4/29 新添資料兩組
C++程式碼
#include <cstdio> #include <map> using namespace std; map <long long, long long> m; int main() { long long n, c, ans=0; scanf("%lld%lld", &n, &c); long long a[n]; for (int i=0; i<n; ++i) scanf("%lld", &a[i]); for (int i=0; i<n; ++i) { ++m[a[i]]; a[i] -= c; } for (int i=0; i<n; ++i) ans += m[a[i]]; printf("%lld\n", ans); return 0; }