Hướng dẫn giải của [Beginner Free Contest 10] BIGGER


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cây ~A~ mỗi năm cao gấp ba lần, cây ~B~ mỗi năm cao gấp hai lần. Cần tìm số năm ít nhất để cây ~A~ cao hơn cây ~B~.

Cách làm

Gọi chiều cao hiện tại của hai cây là ~a~ và ~b~, ban đầu ~a = A, b = B~. Ta lặp: nếu ~a \le b~ thì cho ~a~ nhân ~3~, cho ~b~ nhân ~2~, và tăng số năm đếm được lên ~1~. Khi ~a > b~ thì dừng và in số năm đã đếm.

Ví dụ với ~A = 4, B = 7~: năm 0 là (4, 7), năm 1 là (12, 14), năm 2 là (36, 28). Đến năm 2 thì ~A~ cao hơn, nên đáp án là 2.

Đề cho ~A, B \le 10~ nên vòng lặp chạy rất ít lần, và vẫn dùng ~long long~ cho an toàn.

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long a, b;
    cin >> a >> b;
    // Mỗi năm: cây A nhân 3, cây B nhân 2
    // Đếm số năm cho đến khi A lớn hơn B
    int nam = 0;
    while (a <= b) {
        a = a * 3;
        b = b * 2;
        nam++;
    }
    cout << nam << "\n";
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.