【洛谷 1102】A-B數對
阿新 • • 發佈:2020-12-02
題目描述
出題是一件痛苦的事情!
相同的題目看多了也會有審美疲勞,於是我捨棄了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!
好吧,題目是這樣的:給出一串數以及一個數字 CCC,要求計算出所有 A−B=CA - B = CA−B=C 的數對的個數(不同位置的數字一樣的數對算不同的數對)。
輸入格式
輸入共兩行。
第一行,兩個整數 N,CN, CN,C。
第二行,NNN 個整數,作為要求處理的那串數。
輸出格式
一行,表示該串數中包含的滿足 A−B=CA - B = CA−B=C 的數對的個數。
輸入輸出樣例
輸入 #14 1 1 1 2 3輸出 #1
3
說明/提示
對於 75%75\%75% 的資料,1≤N≤20001 \leq N \leq 20001≤N≤2000。
對於 100%100\%100% 的資料,1≤N≤2×1051 \leq N \leq 2 \times 10^51≤N≤2×105。
保證所有輸入資料都在 323232 位帶符號整數範圍內。
2017/4/29 新添資料兩組
題解:map練習題
#include<cstdio> #include<iostream> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<bits/stdc++.h> typedef long long ll; using namespace std; const int N=200002; int n; ll a[N],c,ans; map<ll,ll>mddd; int main(){ // freopen("1102.in","r",stdin); // freopen("1102.out","w",stdout); scanf("%d %lld",&n,&c); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); mddd[a[i]]++; a[i]-=c; } for(int i=1;i<=n;i++) ans+=mddd[a[i]]; cout<<ans; return 0; }