import sys
n=int(input())
aaa=list(map(int,(input().split())))
xiabiao=[]
xiabiao=list(map(int,range(0,n)))
sub=[]
for i in range(0,n):
sub.append(aaa[i]-xiabiao[i])
x={0:0}
for i in sub:
if i not in x.keys():
x[i]=1
else:
x[i]+=1
result=0
for key in x.keys():
result+=int((x[key]-1)*x[key]/2)
print(result)
下标满足 i<j ai<aj且 aj−ai=j−i
也就是满足i<j ai<aj且 aj-j = ai-i =K(K为常数)
不妨让题目给出的数组全部减去下标,这样一来所有相等的项都互为谐距下标对,最后统计一下相等项的数量,再根据这个数量计算谐距下标对的数量即可。



京公网安备 11010502036488号