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
#include <bits/stdc++.h>
using namespace std;
long long * tab, H, W;
int n;
long long oblicz(long long h, long long w, int pocz){
	if (h >= tab[0] && w >= tab[0] && pocz >= 0) 
	for(int i = pocz; i >= 0; i--){
		if(tab[i] <= h && tab[i] <= w){
			long long ileh = h/ tab[i], ilew = w/tab[i];
			if (h%tab[i] > w%tab[i]) 
				return ileh*ilew + oblicz(h%tab[i],w,pocz-1) + oblicz(w%tab[i],ileh*tab[i],pocz-1);
			else 	
				return ileh*ilew + oblicz(h,w%tab[i],pocz-1)+oblicz(h%tab[i],ilew*tab[i],pocz-1);
		}
	}
	
	return 0;
}
int main() {
	ios_base::sync_with_stdio(0); cin.tie();cout.tie();
	int i;
	cin >> H >> W;
	cin >> n;
	tab = new long long [n];
	cin >> tab[0];
	if(H % tab[0] != 0 || W % tab[0] != 0) {
		cout << -1;
		return 0;
	}
	for(i = 1; i < n; i++){
		cin >> tab[i];
	}
	cout << oblicz(H,W,n-1);
	
	return 0;
}