Cod sursa(job #886484)

Utilizator misinoonisim necula misino Data 22 februarie 2013 21:32:54
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("dreptunghiuri.in");
ofstream g("dreptunghiuri.out");
long long sol,i,j,n,m,a,a1,d,b,b1,c,c1;
int gcd(int a,int b)
{if(b==0)
return  a;
return gcd(b,a%b);
}
int main()
{
    f>>n>>m;
    if(n==1||m==1)
    {
        g<<0<<'\n';
        return 0;
    }
    if(n>m)
    swap(n,m);
    --m,--n;
    sol=m*n*(m+1)*(n+1)/4;
    for(i=1;i<n;++i)
    for(j=1;j<m;++j)
    {
        d=gcd(i,j);
        a=i/d;
        b=j/d;
        c=b+j;
        a1=a;
        b1=b;
        c1=c;
        while(i+a1<=n&&b1<=m&&c1<=m)
        {
            sol+=(n-a1-i+1)*(m-c1+1);
            a1+=a;
            b1+=b;
            c1=j+b1;
        }
    }
    g<<sol<<'\n';
}