其他分享
首页 > 其他分享> > PAT (Basic Level) Practice 1083 是否存在相等的差 (20 分)

PAT (Basic Level) Practice 1083 是否存在相等的差 (20 分)

作者:互联网

题目:1083 是否存在相等的差 (20 分)

来源:PAT (Basic Level) Practice

传送门 1083 是否存在相等的差

题面

image

题意:给定1、2、……、N的一个序列,求第i个数字a[i]与i的差值的绝对值的出现次数≥2的该绝对值与出现次数,按绝对值大小降序输出

思路:结构体存储,注意差值为0的情况

Code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
	ll num=0;
	ll cnt=0;	
};

node m[20000];
int main(){
	ll n,x;
	cin>>n;
	for(ll i=1;i<=n;i++){
		cin>>x;
		x = abs(i-x);
		m[x].num++;
		m[x].cnt = x; 
	}	
	for(ll i = n;i>=0;i--){
		if(m[i].num>1){
			cout<<m[i].cnt<<" "<<m[i].num<<"\n";
		}
	}
	return 0;
}

标签:1083,Level,ll,Practice,num,绝对值,Basic,PAT
来源: https://www.cnblogs.com/w0x59-h/p/15859513.html