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ı
Misal
2 \times 3 ölçüsündə bir düzbucağ üçün mövcuddur:
ədəd vahid düzbucaqlı;
ədəd 1 \cdot 2 ölçülü düzbucaqlı;
ədəd horizontal 1 \cdot 3 düzbucaqlı;
ədəd vertikal 2 \cdot 1 düzbucaqlı;
ədəd 2 \cdot 2 düzbucaqlı;
ədəd 2 \cdot 3 düzbucaqlı;
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)