Cod sursa(job #2632905)

Utilizator giotoPopescu Ioan gioto Data 5 iulie 2020 14:48:10
Problema Dreptunghiuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;

int n, m;
int sum1[160006], sum2[160006];

int main()
{
    freopen("dreptunghiuri.in", "r", stdin);
    freopen("dreptunghiuri.out", "w", stdout);

    scanf("%d%d", &n, &m);

    long long ans = 1LL * n * m * (n - 1) * (m - 1) / 4;

    for (int X = 1; X < n ; ++X)
        for (int dx = 1; dx < n && n - dx >= X; ++dx)
            sum1[X * dx] += (n - dx - X);

    for (int Y = 1; Y < m ; ++Y)
        for (int dy = 1; dy < m && m - dy >= Y ; ++dy)
            sum2[Y * dy] += (m - dy - Y);

    for (int i = 1; i <= min(m * m, n * n) ; ++i)
        ans = ans + 1LL * sum1[i] * sum2[i];

    printf("%lld", ans);

    return 0;
}