Cod sursa(job #335717)

Utilizator mlazariLazari Mihai mlazari Data 31 iulie 2009 07:38:56
Problema Dreptunghiuri Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.68 kb
#include<stdio.h>

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

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

void simplifica(int a,int b,int &va,int &vb) {
  int c;
  if(!b) {
    va=1;
    vb=0;
  }
  else {
    c=cmmdc(a,b);
    va=a/c;
    vb=b/c;
  }
}

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;
}