Cod sursa(job #335677)

Utilizator mlazariLazari Mihai mlazari Data 30 iulie 2009 22:02:16
Problema Dreptunghiuri Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>

int m,n,dx,dy,qx,qy,rx,ry;
long long rez;

void simplifica(int a,int b,int &va,int &vb) {
  int min,i;
  if(!b) {
    va=1;
    vb=0;
  }
  else {
    va=a;
    vb=b;
    if(a<b) min=a;
    else min=b;
    for(i=min;i>1;i--)
     if((va%i==0)&&(vb%i==0))
      while((va%i==0)&&((vb%i)==0)) {
        va/=i;
        vb/=i;
      }
  }
}

int main() {
  freopen("dreptunghiuri.in","r",stdin);
  freopen("dreptunghiuri.out","w",stdout);
  scanf("%d %d",&m,&n);
  for(dx=1;dx<=m;dx++)
   for(dy=0;dy<=n;dy++) {
     simplifica(dx,dy,qx,qy);
     rx=qx;
     ry=qy;
     while((dy+rx<=n)&&(dx+ry<=m)) {
       rez+=(n-dy-rx)*(m-dx-ry);
       rx+=qx;
       ry+=qy;
     }
   }
  printf("%lld",rez);
  return 0;
}