#include <bits/stdc++.h> #define FOR(i, a, b) for(int i =(a); i < (b); ++i) #define re(i, n) FOR(i, 1, n) #define ford(i, a, b) for(int i = (a); i >= (b); --i) #define rep(i, n) for(int i = 0;i <(n); ++i) #define all(x) (x).begin(), (x).end() #define sz(x) (int) (x).size() using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; typedef vector<ll> vll; typedef vector<int> vi; typedef vector<pll> vpll; typedef vector<pii> vpii; const ll inf = 1e18; const int N = 5005; const int mod = 1e9 + 7; ll h, w; int n; vector<ll> in; ll solve(int i, ll h, ll w) { if (h == 0 || w == 0) return 0; if (in[i] > h || in[i] > w) return solve(i-1, h, w); ll dupa = (h/in[i]) * (w/in[i]); ll res1 = solve(i-1, h % in[i], w - (w % in[i])); ll res2= solve(i - 1, h, w % in[i]); return dupa + res1 + res2; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> h >> w >> n; in.resize(n); rep(i, n) { cin >> in[i]; } if (h % in[0] != 0 || w % in[0] != 0) { cout << "-1\n"; return 0; } cout << solve(n-1, h, w) << '\n'; }
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 | #include <bits/stdc++.h> #define FOR(i, a, b) for(int i =(a); i < (b); ++i) #define re(i, n) FOR(i, 1, n) #define ford(i, a, b) for(int i = (a); i >= (b); --i) #define rep(i, n) for(int i = 0;i <(n); ++i) #define all(x) (x).begin(), (x).end() #define sz(x) (int) (x).size() using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; typedef vector<ll> vll; typedef vector<int> vi; typedef vector<pll> vpll; typedef vector<pii> vpii; const ll inf = 1e18; const int N = 5005; const int mod = 1e9 + 7; ll h, w; int n; vector<ll> in; ll solve(int i, ll h, ll w) { if (h == 0 || w == 0) return 0; if (in[i] > h || in[i] > w) return solve(i-1, h, w); ll dupa = (h/in[i]) * (w/in[i]); ll res1 = solve(i-1, h % in[i], w - (w % in[i])); ll res2= solve(i - 1, h, w % in[i]); return dupa + res1 + res2; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> h >> w >> n; in.resize(n); rep(i, n) { cin >> in[i]; } if (h % in[0] != 0 || w % in[0] != 0) { cout << "-1\n"; return 0; } cout << solve(n-1, h, w) << '\n'; } |