#include<iostream> using namespace std; int main(){ long long wymiarx; int wymiary; int n; cin >> wymiarx; cin >> wymiary; cin >> n; int kwadraty[n]; for(int i = 0; i < n; i++){ cin >> kwadraty[i]; } int d; int miescisie = n - 1; long long wynik = 0; int wx; if(wymiarx % kwadraty[0] or wymiary % kwadraty[0]){ cout << -1; } else{ long long w = 0; int rozmiar; while(wymiarx and wymiary){ if(wymiarx > wymiary){ d = wymiarx; wymiarx = wymiary; wymiary = d; } for(int i = miescisie; i >= 0; i--){ if(wymiarx >= kwadraty[i]){ miescisie = i; rozmiar = kwadraty[miescisie]; break; } } wx = wymiarx; w = 0; for(int i = miescisie; i >= 0; i--){ w += (wx / kwadraty[i]) * (rozmiar / kwadraty[i]); wx -= kwadraty[i] * (wx / kwadraty[i]); } wynik += w * (wymiary / rozmiar); wymiary -= (wymiary/ rozmiar) * rozmiar; } cout << wynik; } }
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<iostream> using namespace std; int main(){ long long wymiarx; int wymiary; int n; cin >> wymiarx; cin >> wymiary; cin >> n; int kwadraty[n]; for(int i = 0; i < n; i++){ cin >> kwadraty[i]; } int d; int miescisie = n - 1; long long wynik = 0; int wx; if(wymiarx % kwadraty[0] or wymiary % kwadraty[0]){ cout << -1; } else{ long long w = 0; int rozmiar; while(wymiarx and wymiary){ if(wymiarx > wymiary){ d = wymiarx; wymiarx = wymiary; wymiary = d; } for(int i = miescisie; i >= 0; i--){ if(wymiarx >= kwadraty[i]){ miescisie = i; rozmiar = kwadraty[miescisie]; break; } } wx = wymiarx; w = 0; for(int i = miescisie; i >= 0; i--){ w += (wx / kwadraty[i]) * (rozmiar / kwadraty[i]); wx -= kwadraty[i] * (wx / kwadraty[i]); } wynik += w * (wymiary / rozmiar); wymiary -= (wymiary/ rozmiar) * rozmiar; } cout << wynik; } } |