给定 N 张卡片,正面分别写上 1、2、……、N,然后全部翻面,洗牌,在背面分别写上 1、2、……、N。将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否存在相等的差?
#include<iostream>
#include<vector>
using namespace std;
int main ()
{
int n,b;
cin>>n;
int a[10000]={0};
for(int i=1;i<=n;i++)
{
cin>>b;
b=b-i;
if(b<0)
b=-b;
a[b]++;
}
for(int i=9999;i>=0;i--)
{
if(a[i]>1)
cout<<i<<" "<<a[i]<<endl;
}
return 0;
}