#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { long long h, w; cin >> h >> w; int k; cin >> k; vector<long long> obrazy(k); for (int i = 0; i < k; i++) { cin >> obrazy[i]; } sort(obrazy.begin(), obrazy.end(), greater<long long>()); if (h % obrazy.back() != 0 || w % obrazy.back() != 0) { cout << -1 << endl; return 0; } long long res = 1LL * (h / obrazy[0]) * (w / obrazy[0]), curr = 0, past = 0; for (int i = 1; i < k; i++) { res += (h / obrazy[i]) * (w / obrazy[i]) - (h / obrazy[i - 1]) * (w / obrazy[i - 1]) * (obrazy[i - 1] / obrazy[i]) * (obrazy[i - 1] / obrazy[i]); } cout << res << endl; return 0; }
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 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { long long h, w; cin >> h >> w; int k; cin >> k; vector<long long> obrazy(k); for (int i = 0; i < k; i++) { cin >> obrazy[i]; } sort(obrazy.begin(), obrazy.end(), greater<long long>()); if (h % obrazy.back() != 0 || w % obrazy.back() != 0) { cout << -1 << endl; return 0; } long long res = 1LL * (h / obrazy[0]) * (w / obrazy[0]), curr = 0, past = 0; for (int i = 1; i < k; i++) { res += (h / obrazy[i]) * (w / obrazy[i]) - (h / obrazy[i - 1]) * (w / obrazy[i - 1]) * (obrazy[i - 1] / obrazy[i]) * (obrazy[i - 1] / obrazy[i]); } cout << res << endl; return 0; } |