Cod sursa(job #882314)

Utilizator desoComan Andrei deso Data 19 februarie 2013 00:10:35
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <vector>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
using namespace std;

#define INFILE "dreptunghiuri.in" 
#define OUTFILE "dreptunghiuri.out"

ifstream fin(INFILE);
ofstream fout(OUTFILE);

int main() {
   int n, m;
   fin >> n >> m;
   if( m==1 || n==1 ) {
      fout << '0';
      return 0;
   }
   if( n>m ) swap(n, m);

   long long res = 0;
   m--; n--;
   for(int b=1; b<=m; b++)
   for(int xa = 1; xa<=n; xa++)
      res += (n-xa+1) * (m-b+1);
   //fout << res << endl;

   for(int b=1; b<=m; b++)
   for(int a=1; a<n; a++)
   for(int xa = 1; a+xa<=n; xa++)
      if( (a*xa) % b == 0 )
      {
         int xb = a*xa/b;
         int y = xb+b;
         res += (n-xa-a+1) * (m-y+1);
      }

   fout << res;

   return 0;
}