学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:洛谷刷题C++语言 | 汇总
【题目描述】
给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。
【输入】
输入共两行。
第一行,两个正整数 N,C。
第二行,N 个正整数,作为要求处理的那串数。
【输出】
一行,表示该串正整数中包含的满足 A−B=C 的数对的个数。
【输入样例】
4 1
1 1 2 3
【输出样例】
3
【代码详解】
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, c, x, s, a, b;
map<int, int> m;
signed main()
{
cin >> n >> c;
for (int i=0; i<n; i++) {
cin >> x;
m[x]++;
}
for (map<int,int>::iterator it=m.begin(); it!=m.end(); it++) {
a = it->first;
b = a+c;
if (m.count(b)) s += m[a]*m[b];
}
cout << s << endl;
return 0;
}
【运行结果】
4 1
1 1 2 3
3