Trong bài toán này, chúng ta được cho ba giá trị nguyên A, B và T. Nhiệm vụ của chúng ta là tạo một chương trình để chơi Trò chơi quay chẵn-lẻ với hai số nguyên.
Hai giá trị nguyên là:
T, biểu thị số lượt trong trò chơi.
A biểu thị giá trị cho player1
B biểu thị giá trị cho trình phát 2
Nếu giá trị của T là số lẻ thì giá trị của A nhân với 2.
Nếu giá trị của T là chẵn thì giá trị của B nhân với 2.
Chúng tôi cần tìm và trả về giá trị max (A, B) / min (A, B) ở phần cuối.
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào: A =3, B =4, T =3
Đầu ra: 1
Giải thích:
Lượt 1:T lẻ, A nhân với 2, A =6.
Lượt 2:T chẵn, B nhân 2, B =8.
Lượt 3:T lẻ, A nhân với 2, A =12.
A =12 B =4
max (A, B) =max (12, 4) =12
tối thiểu (A, B) =tối thiểu (12, 4) =4
tối đa (A, B) / phút (A, B) =12/8 =1
Phương pháp tiếp cận giải pháp:
Một giải pháp đơn giản cho vấn đề sẽ là tính giá trị của A và B sau khi T lần lượt và sau đó trả về giá trị max (A, B) / min (A, B). Đây là một giải pháp hiệu quả bằng cách lặp lại T.
Nhưng chúng có thể là một giải pháp hiệu quả hơn dựa trên thực tế là đối với giá trị chẵn của T, giá trị của A mới là N * A và giá trị của B mới là N * B.
Điều này làm cho giá trị của max (A, B) / min (A, B) trở thành một hằng số bằng
tối đa (A, B) / phút (A, B).
Nếu giá trị của T là lẻ, giá trị của A sẽ là 2 * N * A và giá trị của B là N * B.
Điều này làm cho giá trị của max (A, B) / min (A, B) trở thành một hằng số bằng max (2A, B) / min (2A, B).
Kết quả của bài toán max (A, B) / min (A, B) =
max (A, B) / min (A, B), nếu T là chẵn
max (A, B) / min (A, B), nếu T là số lẻ
Chương trình minh họa hoạt động của giải pháp của chúng tôi,
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); }
Đầu ra -
The return value of even odd game is 3