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
45
46
47
48
49
50
51
52
53
54
55
#include <bits/stdc++.h>

#define pb push_back

using namespace std;

typedef vector<int> vi;
typedef pair<int, int> pii;

int d[33];
long long sum;

void pol(int h, int w, int n) {
    if(h > w) swap(h, w);
    if(h == 0) return;
    
    int w1;
    int h1 = h;
    
    for(int i = n-1; i >= 0; i--) {
        if(d[i] <= h) {
            sum += w / d[i];
            w1 = w/d[i]*d[i];
            h1 -= d[i];
            break;
        } 
    }
    
    for(int i = n-1; i >= 0; i--) {
        while(h1 >= d[i]) {
            sum += w1 / d[i];
            h1 -= d[i];
        }
    }
    
    pol(h, w - w1, n);
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);	
    
    
    int h, w, n;
    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";
    else {
        pol(h, w, n);
        cout << sum << "\n";
    }
	
    return 0;
}