#include <iostream> #include <vector> namespace { using std::ios_base, std::cin, std::cout; using ds_t = std::vector<size_t>; size_t ile_sie_miesci(size_t h, size_t w, size_t r, ds_t const & ds) { if (h == 0 || w == 0) { return 0; } else if (r == 0) { return (h / ds[r]) * (w / ds[r]); } else { size_t tmp; if (w < h) tmp = h, h = w, w = tmp; size_t res = (h / ds[r]) * (w / ds[r]); if (res > 0) { tmp = w % ds[r]; res += ile_sie_miesci(h, tmp, r - 1, ds); res += ile_sie_miesci(h % ds[r], w - tmp, r - 1, ds); } else { res = ile_sie_miesci(h, w, r - 1, ds); } return res; } } } // namespace int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // Wprowadzenie danych size_t h, w, di; size_t n; ds_t ds; cin >> h; cin >> w; cin >> n; for (size_t k = 0; k < n; ++k) { cin >> di; ds.push_back(di); } // Obliczenie wyniku if (h % ds[0] != 0 || w % ds[0] != 0) { cout << -1 << '\n'; } else { cout << ile_sie_miesci(h, w, n - 1, ds) << '\n'; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <iostream> #include <vector> namespace { using std::ios_base, std::cin, std::cout; using ds_t = std::vector<size_t>; size_t ile_sie_miesci(size_t h, size_t w, size_t r, ds_t const & ds) { if (h == 0 || w == 0) { return 0; } else if (r == 0) { return (h / ds[r]) * (w / ds[r]); } else { size_t tmp; if (w < h) tmp = h, h = w, w = tmp; size_t res = (h / ds[r]) * (w / ds[r]); if (res > 0) { tmp = w % ds[r]; res += ile_sie_miesci(h, tmp, r - 1, ds); res += ile_sie_miesci(h % ds[r], w - tmp, r - 1, ds); } else { res = ile_sie_miesci(h, w, r - 1, ds); } return res; } } } // namespace int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // Wprowadzenie danych size_t h, w, di; size_t n; ds_t ds; cin >> h; cin >> w; cin >> n; for (size_t k = 0; k < n; ++k) { cin >> di; ds.push_back(di); } // Obliczenie wyniku if (h % ds[0] != 0 || w % ds[0] != 0) { cout << -1 << '\n'; } else { cout << ile_sie_miesci(h, w, n - 1, ds) << '\n'; } } |