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
#include <iostream>

typedef long long ll;
using namespace std;

ll d[31];

ll result;

void s(ll w, ll h, int dli) {
	while (w < d[dli] || h < d[dli]) dli--;
	ll dl = d[dli];
	result += (w / dl) * (h / dl);
	if (w % dl) s(w % dl, h - h % dl, dli-1);
	if (h % dl) s(h % dl, w - w % dl, dli-1);
	if (h % dl && w % dl) s(h % dl, w % dl, dli-1);
}

int main() {
	ll w, h;
	cin >> h >> w;
	int n;
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> d[i];
	}
	if (h % d[0] || w % d[0]) {
		cout << -1 << endl;
		return 0;
	}
	s(w, h, n-1);
	cout << result << endl;
	return 0;
}