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;

vector<int> num;

long long solve(int N,int M,int max)
{
    if(N==0 || M==0) return 0;
    while(num[max]>N || num[max]>M) max--;
    long long x= N/num[max];
    long long y = M/num[max];
    long long res= x*y;
    return solve(N -x*num[max],num[max]*y,max)+solve(N,M-num[max]*y,max)+res; 
}
int main()
{
    int N,M;cin>>N>>M;
    int q;cin>>q;
    num.resize(q,0);
    for(int i=0;i<q;i++)cin>>num[i];
    if(M%num[0] !=0 || N%num[0]!= 0)
    {
        cout<<-1;
    }
    else cout<<solve(N,M,q-1);

}