Cod sursa(job #1043755)

Utilizator geniucosOncescu Costin geniucos Data 28 noiembrie 2013 22:07:01
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
#include<vector>
using namespace std;
int i,j,N,M,A,B,C,D;
long long ras;
vector < int > div[16005];
int main()
{
freopen("dreptunghiuri.in","r",stdin);
freopen("dreptunghiuri.out","w",stdout);
scanf("%d%d",&N,&M);
ras=1LL*N*(N-1)/2*M*(M-1)/2;
for(i=1;i<=N*N;i++)
    for(j=1;j*j<=i&&j<M;j++)
    {
        if(j<M) div[i].push_back(j);
        if(i/j<M&&j*j!=i) div[i].push_back(i/j);
    }
for(A=1;A<N;A++)
    for(B=1;B+A+1<=N;B++)
    {
        for(i=0;i<div[A*B].size();i++)
        {
            C=div[A*B][i];
            D=(A*B)/C;
            if(C+D<M) ras+=1LL*(N-A-B)*(M-C-D);
        }
    }
printf("%lld\n",ras);
return 0;
}