Cod sursa(job #2478318)

Utilizator lucametehauDart Monkey lucametehau Data 21 octombrie 2019 21:30:41
Problema Dreptunghiuri Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream cin ("dreptunghiuri.in");
ofstream cout ("dreptunghiuri.out");

int n, m, cnt, ans;

int main() {
  cin >> n >> m;
  // a / c = d / b => a * b = c * d, a + b = n, c + d = m
  // n * a - a^2 = m * c - c^2
  // c^2 - m * c + a * (n - a) = 0
  for(int i = 1; i < n; i++) {
    for(int j = 1; j < m; j++) {
      cnt = 1;
      for(int a = 1; a < i; a++) {
        int delta = j * j - 4 * a * (i - a);
        if(delta == 0 && j % 2 == 0)
          cnt++;
        else {
          int rad = sqrt(delta);
          if(delta && rad * rad == delta && (j + rad) % 2 == 0 && j > rad)
            cnt += 2;
        }
      }
      ans += cnt * (n - i) * (m - j);
    }
  }
  cout << ans;
  return 0;
}