Düzbucaqlıların sayı#11258

Düzbucaqlıların sayı (Həll təhlili)

Gəlin a \times b ölçüsündə bir düzbucağını şəbəkədə təsvir edək. Gəlin dəyərini neçə yolla seçə biləcəyimizə baxaq. Şəbəkədə sıra kvadrat vardır, buna görə şəbəkədə n+1 horizontal xətt var. Onları -dən n+1-ə qədər nömrələyək. İki xətti və j~(i < j) seçək. Bu xətlər arasında bir seqment çəkək - bu vertikal tərəf olacaq. Xətləri və j~(i < j) seçməyin üsul sayı \{1, 2, ..., n+1\} dəstindən C_{n+1}^2-yə bərabərdir. Məsələn, n = 2 üçün vertikal tərəfi seçməyin variantı var:

Oxşar, şəbəkədə m+1 vertikal xətt var. Horizontal tərəfi seçməyin üsul sayı C_{m+1}^2-yə bərabərdir.

Beləliklə, şəbəkədə müxtəlif düzbucaqların sayı

C_{n+1}^2 \cdot C_{m+1}^2 = {(n + 1) \cdot n \over 2} \cdot {(m + 1) \cdot m \over 2}

Misal

2 \times 3 ölçüsündə bir düzbucağ üçün mövcuddur:

Nəticədə C_3^2 \cdot C_4^2 = 3 \cdot 6 = 18 düzbucaqlı əldə olunur.

Alqoritmin həyata keçirilməsi

Çünki n, m \le 10^5 olduğundan, düzbucaqların ümumi sayı C_{n+1}^2 \cdot C_{m+1}^2 \le (10^5)^2 \cdot (10^5)^2 = 10^{20} qədər ola bilər. Bu nəticə bit tam ədədini aşır. Ona görə də, həlli Python dilində həyata keçirərik.

n, m = map(int,input().split())
a = (n + 1) * n // 2
b = (m + 1) * m // 2
res = a * b
print(res)