Cod sursa(job #1993169)

Utilizator Neamtu_StefanStefan Neamtu Neamtu_Stefan Data 22 iunie 2017 15:14:00
Problema Dreptunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#define NMAX 410

using namespace std;

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

int n,m;

long long s;

int radical[NMAX*NMAX];

int main()
{
    fin >> n >> m;

    for (int i=1;i<=400;i++)
        radical[i*i]=i;

    for (int l=1;l<n;l++)
        for (int c=1;c<m;c++)
        {
            int curent=1;
            for (int a=1;a<c;a++)
            {
                int delta=l*l-4*a*(c-a);
                if(delta<0 || radical[delta]*radical[delta]!=delta)
                    continue;
                if (radical[delta]==0) curent++;
                else if(radical[delta]<l)curent+=2;
            }
            s+=(n-l)*(m-c)*curent;
        }

    fout << s;

    return 0;
}