#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 2137
#endif
const int N = 30;
int h, w, n;
int d[N];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> h >> w >> n;
for (int i = 0; i < n; i++) {
cin >> d[i];
}
if (h % d[0] != 0 || w % d[0] != 0) {
cout << "-1\n";
return 0;
}
int x = h / d[0];
int y = w / d[0];
ll ans = 0;
for (int i = 1; i < n; i++) {
int il = d[i] / d[i - 1];
if (il > min(x, y)) {
break;
}
int rx = x % il;
int ry = y % il;
ans += 1ll * rx * y + 1ll * ry * x - 1ll * rx * ry;
x /= il;
y /= il;
}
ans += 1ll * x * y;
cout << ans << '\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 | #include <bits/stdc++.h> using namespace std; using ll = long long; #ifdef LOCAL #include "debug.h" #else #define debug(...) 2137 #endif const int N = 30; int h, w, n; int d[N]; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> h >> w >> n; for (int i = 0; i < n; i++) { cin >> d[i]; } if (h % d[0] != 0 || w % d[0] != 0) { cout << "-1\n"; return 0; } int x = h / d[0]; int y = w / d[0]; ll ans = 0; for (int i = 1; i < n; i++) { int il = d[i] / d[i - 1]; if (il > min(x, y)) { break; } int rx = x % il; int ry = y % il; ans += 1ll * rx * y + 1ll * ry * x - 1ll * rx * ry; x /= il; y /= il; } ans += 1ll * x * y; cout << ans << '\n'; } |
English