Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Trò chơi chẵn lẻ với hai số nguyên trong C++


Cho A, B, T. Nhiệm vụ: trò chơi chẵn lẻ với hai số nguyên.

Luật chơi:

  • Lượt lẻ (T lẻ): A = A * 2.
  • Lượt chẵn (T chẵn): B = B * 2.

Sau T lượt, tính max(A, B) / min(A, B).

Ví dụ:

Đầu vào: A = 3, B = 4, T = 3

Đầu ra: 1

Giải thích:

Lượt 1 (lẻ): A=6
Lượt 2 (chẵn): B=8
Lượt 3 (lẻ): A=12
A=12, B=4 (wait, B should be 8? Example says B=4? Let's re-check: original says B=4 after turn 3? Actually original example: "B = 4" but B was 4 initially, then turn 2 B=8, turn 3 no change to B. So final A=12, B=8. max/min = 12/8 = 1 (integer division). Output 1 matches.)

Phương pháp giải

Mô phỏng T lượt O(T).

Tối ưu O(1):

  • T chẵn: A, B đều nhân cùng hệ số => tỷ số max/min không đổi = max(A,B)/min(A,B).
  • T lẻ: A nhân thêm 2 => tỷ số = max(2A, B)/min(2A, B).

Chương trình minh họa

Ví dụ

#include <iostream>
using namespace std;

int EvenOddGame(int A, int B, int T) {
    if (T % 2 == 0)
        return (max(A, B) / min(A, B));
    else
        return (max(2 * A, B) / min(2 * A, B));
    return -1;
}

int main() {
    int A = 3, B = 2, T = 3;
    cout << "The return value of even odd game is " << EvenOddGame(A, B, T);
}

Kết quả

The return value of even odd game is 3