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
#include<bits/stdc++.h>

using namespace std;

long long n, d[100];
long long h, w, odp;

void rek(int i, int wys, int szer){
    //cout << i << " " << wys << " " << szer << endl;
    odp+=(wys%d[i])/d[i-1]*szer/d[i-1]+(szer%d[i])/d[i-1]*wys/d[i-1]-(szer%d[i])*(wys%d[i])/d[i-1]/d[i-1];
    //cout << (wys%d[i])/d[i-1]*szer/d[i-1]+(szer%d[i])/d[i-1]*wys/d[i-1] << endl;
    if(i==n)return;
    rek(i+1, wys/d[i]*d[i], szer/d[i]*d[i]);
}

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