1. 程式人生 > 其它 >C++ A-B Problem

C++ A-B Problem

技術標籤:我是小白C++

題目:
給出一串數以及一個數字 C,要求計算出所有 A-B=C 的數對 的個數。( 注意: 不同位置的數字一樣的數對算不同的數對)其中 A , B 必須屬於這一串數
輸入:
第一行包括 2 個非負整數 N 和 C,中間用空格隔開。 第二行有 N(N<=200000) 個整數,中間用空格隔開,作為要求處理的那串數。
輸出:
輸出一行,表示該串數中包含的所有滿足 A-B=C 的數對的個數(假設每次輸入都會有至少為 1 的結果)
輸入示例:
4 1
1 1 2 3
輸出:
3

#include<iostream>
#include<map>//匯入對映庫 
using namespace std; map<long,int> m;//長整型資料作鍵,整型作值,建立對映 int n; long c,num[200005];//由於資料過大 int main(){ while(scanf("%d%ld",&n,&c) !=EOF){ int ans=0,i=n; while(i--){ cin>>num[i];//依填輸入N個數據 m[num[i]]++;//統計每個數出現的次數! } i=n;//千萬別忘了更新 i 的值 if(c>0)//僅一個分支時可以不用大括號,簡化程式碼
while(i--) ans+=m[num[i]+c]; else while(i--) ans=ans+m[num[i]+c]-1;//去掉自己 cout<<ans<<endl; } return 0; }

這裡主要是熟悉一下對映(map)的操作
加油哦!!!