#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
int main()
{
ll h,w,n,zw=0;
cin>>h>>w>>n;
vector <ll> oni(n);
for(int i=0;i<n;i++)
cin>>oni[n-i-1];
if(h%oni[n-1]!=0||w%oni[n-1]!=0) {cout<<-1<<"\n"; return 0;}
int x=0;
while(h>0&&w>0)
{
while(oni[x]>h||oni[x]>w) x++;
ll y=oni[x],z=x;
zw+=(h/y)*(w/y);
ll a=h-h%y,b=w%y;
while(a>0&&b>0)
{
while(oni[z]>a||oni[z]>b) z++;
zw+=(a/oni[z])*(b/oni[z]);
b%=oni[z];
}
a=h%y,b=w-w%y,z=x;
while(a>0&&b>0)
{
while(oni[z]>a||oni[z]>b) z++;
zw+=(a/oni[z])*(b/oni[z]);
a%=oni[z];
}
w%=y;
h%=y;
}
cout<<zw<<"\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 | #include <iostream> #include <vector> using namespace std; typedef long long ll; int main() { ll h,w,n,zw=0; cin>>h>>w>>n; vector <ll> oni(n); for(int i=0;i<n;i++) cin>>oni[n-i-1]; if(h%oni[n-1]!=0||w%oni[n-1]!=0) {cout<<-1<<"\n"; return 0;} int x=0; while(h>0&&w>0) { while(oni[x]>h||oni[x]>w) x++; ll y=oni[x],z=x; zw+=(h/y)*(w/y); ll a=h-h%y,b=w%y; while(a>0&&b>0) { while(oni[z]>a||oni[z]>b) z++; zw+=(a/oni[z])*(b/oni[z]); b%=oni[z]; } a=h%y,b=w-w%y,z=x; while(a>0&&b>0) { while(oni[z]>a||oni[z]>b) z++; zw+=(a/oni[z])*(b/oni[z]); a%=oni[z]; } w%=y; h%=y; } cout<<zw<<"\n"; } |
English