#include <bits/stdc++.h> using namespace std; const int MX=44; int w,h,n,a[MX]; long long c[MX],d[MX],res; int main() { scanf("%d%d%d",&w,&h,&n); for (int i=1; i<=n; i++) scanf("%d",&a[i]); for (int i=n; i>0; i--) { c[i]=w/a[i]; w%=a[i]; d[i]=h/a[i]; h%=a[i]; } if (w>0 || h>0) { puts("-1"); return 0; } long long cs=0,ds=0; for (int i=n; i>0; i--) { if (i<n) { cs*=a[i+1]/a[i]; ds*=a[i+1]/a[i]; } cs+=c[i]; res+=c[i]*ds+d[i]*cs; ds+=d[i]; } printf("%lld\n",res); return 0; }
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 | #include <bits/stdc++.h> using namespace std; const int MX=44; int w,h,n,a[MX]; long long c[MX],d[MX],res; int main() { scanf("%d%d%d",&w,&h,&n); for (int i=1; i<=n; i++) scanf("%d",&a[i]); for (int i=n; i>0; i--) { c[i]=w/a[i]; w%=a[i]; d[i]=h/a[i]; h%=a[i]; } if (w>0 || h>0) { puts("-1"); return 0; } long long cs=0,ds=0; for (int i=n; i>0; i--) { if (i<n) { cs*=a[i+1]/a[i]; ds*=a[i+1]/a[i]; } cs+=c[i]; res+=c[i]*ds+d[i]*cs; ds+=d[i]; } printf("%lld\n",res); return 0; } |