P1102 A-B 数对(洛谷题面

题目

题目描述:

给出一串正整数数列以及一个正整数 CC,要求计算出所有满足 AB=CA - B = C 的数对的个数(不同位置的数字一样的数对算不同的数对)。

输入格式:

输入共两行。

第一行,两个正整数 N,CN,C

第二行,NN 个正整数,作为要求处理的那串数。

输出格式:

一行,表示该串正整数中包含的满足 AB=CA - B = C 的数对的个数。

数据范围与说明:

对于 75%75\% 的数据,1N20001 \leq N \leq 2000

对于 100%100\% 的数据,1N2×1051 \leq N \leq 2 \times 10^50ai<2300 \leq a_i <2^{30}1C<2301 \leq C < 2^{30}

2017/4/29 新添数据两组

输入输出样例 #1

输入:

1
2
4 1
1 1 2 3

输出:

1
3

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int a[N];
map<ll,ll> m;
int main(){
ll n,c;
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i];
m[a[i]]++;
a[i]-=c;
}
ll ans=0;
for(int i=1;i<=n;i++) ans+=m[a[i]];
cout<<ans;
return 0;
}