#include<bits/stdc++.h> using namespace std; #define pb push_back #define eb emplace_back //mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); #define mod 998244353 #define int long long #define inf 0x3f3f3f3f #define INF 0x3f3f3f3f3f3f3f3f inline int read() { char ch=getchar(); int nega=1; while(!isdigit(ch)) {if(ch=='-') nega=-1; ch=getchar();} int ans=0; while(isdigit(ch)) {ans=ans*10+ch-48;ch=getchar();} if(nega==-1) return -ans; return ans; } void print(vector<int> x){for(int i=0;i<(int)x.size();i++) printf("%d%c",x[i]," \n"[i==(int)x.size()-1]);} #define N 35 int a[N]; signed main() { int n,m; cin>>n>>m; int k; cin>>k; for(int i=1;i<=k;i++) a[i]=read(); sort(a+1,a+k+1,greater<int>()); if(n%a[k]!=0||m%a[k]!=0) cout<<"-1\n"; else { int ans=0,p=0,q=0; for(int i=1;i<=k;i++) { ans+=(n/a[i])*(m/a[i])-(p/a[i])*(q/a[i]); p=n/a[i]*a[i],q=m/a[i]*a[i]; } cout<<ans<<endl; } 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 27 28 29 30 31 32 33 34 35 36 37 38 | #include<bits/stdc++.h> using namespace std; #define pb push_back #define eb emplace_back //mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); #define mod 998244353 #define int long long #define inf 0x3f3f3f3f #define INF 0x3f3f3f3f3f3f3f3f inline int read() { char ch=getchar(); int nega=1; while(!isdigit(ch)) {if(ch=='-') nega=-1; ch=getchar();} int ans=0; while(isdigit(ch)) {ans=ans*10+ch-48;ch=getchar();} if(nega==-1) return -ans; return ans; } void print(vector<int> x){for(int i=0;i<(int)x.size();i++) printf("%d%c",x[i]," \n"[i==(int)x.size()-1]);} #define N 35 int a[N]; signed main() { int n,m; cin>>n>>m; int k; cin>>k; for(int i=1;i<=k;i++) a[i]=read(); sort(a+1,a+k+1,greater<int>()); if(n%a[k]!=0||m%a[k]!=0) cout<<"-1\n"; else { int ans=0,p=0,q=0; for(int i=1;i<=k;i++) { ans+=(n/a[i])*(m/a[i])-(p/a[i])*(q/a[i]); p=n/a[i]*a[i],q=m/a[i]*a[i]; } cout<<ans<<endl; } return 0; } |