题解 | 谐距下标对
谐距下标对
https://www.nowcoder.com/practice/12fd032361704c978bcb9c2c2b3bb93d
using System;
using System.Collections.Generic;
public class Program {
public static void Main() {
int n =int.Parse(Console.ReadLine());
string[] p=Console.ReadLine().Split();
Dictionary<int, long> Dic=new Dictionary<int, long>();
for (int i=0;i<n;i++){
int a=int.Parse(p[i]);
int key=a-i;
if(Dic.ContainsKey(key)){
Dic[key]++;
}else{
Dic[key]=1;
}
}
long ans=0;
foreach(var k in Dic){
long cnt=k.Value;
ans+=cnt *(cnt-1) /2;
}
Console.WriteLine(ans);
}
}
