Topics

Idea

Euclid’s algorithm like idea, where we keep forming a/b squares and then the remaining rectangle will be of size (b, a%b). Repeat this recurrence until we exhaust the paper. Since this is a tail recurrence, it can be done iteratively as well.

Code

ll func(ll a, ll b) { if (a < b) swap(a, b); if (b == 0) return 0; return (a / b) + func(b, a % b); } void solve() { ll a, b; cin >> a >> b; ll res = func(a, b); cout << res << endl; }