题目描述
逆序对问题对于大家来说已经是非常熟悉的问题了,就是求 i<j
时, a[i]>a[j]
的组数。现在请你求出一串数字中的逆序对的个数,需要注意的是,这些数字均在 [0,9]
之内。
输入输出格式
输入格式
首先输入 n
,代表有 n
个数 (0<n≤106)
接下来输入 n
个数,每个数都在 [0,9]
之内。
同一行数字之间用空格隔开。
输出格式
输出逆序对的个数,且对 109+7
取模。
输入输出样例
输入
3
3 2 1
输出
3
题目思路:
求逆序对的个数(当i<j时,ai>aj的个数)并输出其对109+7取余后的结果。由于需要比较ai和aj的大小且i<j,故可以考虑用双重遍历的方式(两重循环)并计数的方式,最后对109+7取余得到最终结果。
n = int(input())
data = list(map(int,input().split())) #用map处理输入数据
count = 0 #初始化count
for a in range(n): #两重遍历
for b in range(a+1,n):
if data[a] > data[b]: #满足条件则加一
count += 1
print(count%(10**9+7)) #输出求余后的结果