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

using namespace std;
typedef long long int I;

I  h,w,n;
I d[50];
I r;

int oblicz2(I dd, I h, int i) {
    if (i < 0) return h*dd;
    I a = h/d[i];
    r+=a*dd/d[i];
    return oblicz2(dd, h-a*d[i], i-1);
}

int oblicz(I h, I w, int i) {
    if (i < 0) return h*w;
    I a = h/d[i];
    I b = w/d[i];
    r += a*b;
    I rr = oblicz2(a*d[i], w-b*d[i], i-1);
    rr  += oblicz2(b*d[i], h-a*d[i], i-1);
    if (rr) return rr;
    return oblicz(h-a*d[i], w-b*d[i],i-1);
}


int main()
{
    cin >> h >> w >> n;
    for(I i=0;i<n;i++) cin >> d[i];
    I zero = oblicz(h,w,n-1);

    if(zero != 0) r = -1;
    cout << r << "\n";
}