Підрахунок пар#12313

Підрахунок пар (Розбір)

Автор проблеми:

Хасан Салех (MathModel)

Підготував:

Хасан Салех (MathModel)

Редактор:

Хасан Салех (MathModel)

Рішення

Ми можемо усунути середню частину і враховувати лише крайні ліві та праві частини.

Не існує жодного випадку, коли x+y \ge x^y , лише для пар та , де - ціле число.

Ми виключаємо всі пари , назвемо кількість двійок , потім виключаємо \frac{f(2) \times (f(2)-1)}{2}.

Ми виключаємо всі пари (включаючи одиниці), таким чином, ми виключаємо:

  • пари , тобто \frac{f(1) \times (f(1)-1)}{2}

  • пари , тобто f(1) \times (n-f(1)).

Потім наша відповідь готова!

for _ in range(int(input())):
    n=int(input())
    a=list(map(int,input().split()))
    cnt=[0]*3
    for i in a:
        if(i<=2):cnt[i]+=1
    ans=(n*(n-1))//2
    ans-=(cnt[2]*(cnt[2]-1))//2
    ans-=(cnt[1]*(cnt[1]-1))//2
    ans-=(cnt[1])*(n-cnt[1])
    print(ans)