Cod sursa(job #1231996)

Utilizator tudorv96Tudor Varan tudorv96 Data 21 septembrie 2014 20:45:47
Problema Dreptunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
using namespace std;

ifstream fin ("dreptunghiuri.in");
ofstream fout ("dreptunghiuri.out");

int n, m;
long long sol;

int cmmdc(int a, int b) {
    if (!b)
        return a;
    else
        return cmmdc(b, a % b);
}

int main() {
    fin >> m >> n;
    --m, --n;
    sol = 1LL * n * (n + 1) * m * (m + 1) >> 2;
    for (int x = 1; x <= m; ++x)
        for (int y = 1; y <= n; ++y)
            if (cmmdc(x, y) == 1)
                for (int i = 1; x * i <= m && y * i <= n; ++i)
                    for (int j = 1; x * i + j * y <= m && x * j + y * i <= n; ++j)
                        sol += (n - x * j - y * i + 1) * (m - x * i - j * y + 1);
    fout << sol;
}