#include <vector>
#include <iostream>
int main() {
int h, w;
std::cin >> h >> w;
int n;
std::cin >> n;
std::vector<int> paintings;
for (int i = 0; i < n; i++) {
int tmp;
std::cin >> tmp;
paintings.push_back(tmp);
}
if (h % paintings.front() != 0 || w % paintings.front() != 0) {
std::cout << -1 << "\n";
return 0;
}
int prevH = h;
int prevW = w;
int prevPaintingSize = paintings.front();
long long count = static_cast<long long>((prevH / prevPaintingSize)) * (prevW / prevPaintingSize);
for (int i = 1; i < paintings.size(); i++) {
int currentPaintingSize = paintings[i];
int currentH = (prevH / currentPaintingSize) * currentPaintingSize;
int currentW = (prevW / currentPaintingSize) * currentPaintingSize;
if (currentH == 0 || currentW == 0) {
break;
}
long long toDeduct = static_cast<long long>((currentH / prevPaintingSize)) * (currentW / prevPaintingSize);
long long toAdd = static_cast<long long>((currentH / currentPaintingSize)) * (currentW / currentPaintingSize);
count -= toDeduct;
count += toAdd;
prevH = currentH;
prevW = currentW;
prevPaintingSize = currentPaintingSize;
}
std::cout << count << "\n";
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 34 35 36 37 38 39 40 41 42 43 44 | #include <vector> #include <iostream> int main() { int h, w; std::cin >> h >> w; int n; std::cin >> n; std::vector<int> paintings; for (int i = 0; i < n; i++) { int tmp; std::cin >> tmp; paintings.push_back(tmp); } if (h % paintings.front() != 0 || w % paintings.front() != 0) { std::cout << -1 << "\n"; return 0; } int prevH = h; int prevW = w; int prevPaintingSize = paintings.front(); long long count = static_cast<long long>((prevH / prevPaintingSize)) * (prevW / prevPaintingSize); for (int i = 1; i < paintings.size(); i++) { int currentPaintingSize = paintings[i]; int currentH = (prevH / currentPaintingSize) * currentPaintingSize; int currentW = (prevW / currentPaintingSize) * currentPaintingSize; if (currentH == 0 || currentW == 0) { break; } long long toDeduct = static_cast<long long>((currentH / prevPaintingSize)) * (currentW / prevPaintingSize); long long toAdd = static_cast<long long>((currentH / currentPaintingSize)) * (currentW / currentPaintingSize); count -= toDeduct; count += toAdd; prevH = currentH; prevW = currentW; prevPaintingSize = currentPaintingSize; } std::cout << count << "\n"; return 0; } |
English