1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
MOD = 10**9 + 7

# Funkcja do obliczenia średniej liczby inwersji w permutacjach modulo MOD
def avg_inversions(n):
    # Obliczamy n*(n-1) modulo MOD, następnie dzielimy przez 2, a nie przez 4, ponieważ
    # dzielenie przez 2 (dla liczby par) jest równoznaczne z mnożeniem przez odwrotność 2 modulo MOD
    result = (n * (n-1) // 2) * mod_inv(2) % MOD
    return result

# Poprawiona funkcja do obliczenia odwrotności modularnej
def mod_inv(x, mod=MOD):
    return pow(x, mod-2, mod)

# Testowanie poprawionego kodu z przykładowymi danymi
print(avg_inversions(3))  # Powinno wyjść 333333337 dla przykładu 1
print(avg_inversions(5))  # Powinno wyjść 5 dla przykładu 2