Cod sursa(job #2713524)

Utilizator AlexPop28Pop Alex-Nicolae AlexPop28 Data 28 februarie 2021 10:44:27
Problema Dreptunghiuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>
#define int long long
 
using namespace std;
 
int C2(int n) {
  return n * (n - 1) / 2;
}
 
int32_t main() {
  ifstream cin("dreptunghiuri.in");
  ofstream cout("dreptunghiuri.out");
 
  int n, m; cin >> n >> m;
  vector<int> choose_xy(n * n);
  for (int x = 1; x < n; ++x) {
    for (int y = 1; x + y <= n; ++y) {
      choose_xy[x * y] += n - x - y;
    }
  }
  vector<int> choose_zt(m * m);
  for (int z = 1; z < m; ++z) {
    for (int t = 1; z + t <= m; ++t) {
      choose_zt[z * t] += m - z - t;
    }
  }
  
  int ans = 0;
  int lim = min(n * n, m * m);
  for (int i = 1; i < lim; ++i) {
    ans += choose_xy[i] * choose_zt[i];
  }
  ans += C2(n) * C2(m);
  cout << ans << endl;
}