Cod sursa(job #442061)

Utilizator vladiiIonescu Vlad vladii Data 13 aprilie 2010 20:38:59
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <math.h>
//#include <conio.h>
using namespace std;

int N, M, H, W, sol;

int main() {
    FILE *f1=fopen("dreptunghiuri.in", "r"), *f2=fopen("dreptunghiuri.out", "w");
    int i, j, p, A, D, C1, C2;
    fscanf(f1, "%d %d\n", &M, &N);
    for(i=1; i<N; i++) {
         for(j=1; j<M; j++) {
              //aflu numarul de dreptunghiuri inscrise
              //intr-un dreptunghi mare de laturi H = i, W = j
              H = i; W = j; p=0;
              for(A=0; A<H; A++) {
                   D=W*W - 4*A*(H - A);
                   if(D>=0 && sqrt(D)*sqrt(D)==D) {
                        if((W - (int)sqrt(D))%2==0 && (W - sqrt(D))/2>=0 && (W - sqrt(D))/2<=W) {
                             p++;
                        }
                        else if((W + (int)sqrt(D))%2==0 && (W + sqrt(D))/2>=0 && (W + sqrt(D))/2<=W) {
                             p++;
                        }
                   }
              }
              p *= ((N-H)*(M-W));
              sol+=p;
         }
    }
    fprintf(f2, "%d\n", sol);
    fclose(f1); fclose(f2);
    //getch();
    return 0;
}