#include <iostream> #include <string> using namespace std; unsigned long long t[31]; long long wyn=0,n; void rozw(unsigned long long w,unsigned long long h){ // cout<<w<<' '<<h<<' '; if(w<=0||h<=0)return; int k=n-1; while(t[k]>h||t[k]>w)k--; // cout<<k<<endl; wyn+=(w/t[k])*(h/t[k]); rozw(w-(w/t[k])*t[k],t[k]*(h/t[k]));//; rozw(w,h-(h/t[k])*t[k]); } int main() { ios_base::sync_with_stdio(false); unsigned long long w,h; cin>>w>>h>>n; for(int i=0;i<n;++i){ cin>>t[i]; } // long long ile=w*h/t[0]/t[0]; if(w%t[0]!=0||h%t[0]!=0){ cout<<-1; return 0; } rozw(w,h); cout<<wyn; return 0; } /* 10 14 4 2 4 8 24 */
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 | #include <iostream> #include <string> using namespace std; unsigned long long t[31]; long long wyn=0,n; void rozw(unsigned long long w,unsigned long long h){ // cout<<w<<' '<<h<<' '; if(w<=0||h<=0)return; int k=n-1; while(t[k]>h||t[k]>w)k--; // cout<<k<<endl; wyn+=(w/t[k])*(h/t[k]); rozw(w-(w/t[k])*t[k],t[k]*(h/t[k]));//; rozw(w,h-(h/t[k])*t[k]); } int main() { ios_base::sync_with_stdio(false); unsigned long long w,h; cin>>w>>h>>n; for(int i=0;i<n;++i){ cin>>t[i]; } // long long ile=w*h/t[0]/t[0]; if(w%t[0]!=0||h%t[0]!=0){ cout<<-1; return 0; } rozw(w,h); cout<<wyn; return 0; } /* 10 14 4 2 4 8 24 */ |