C++中两个整数的奇偶回合游戏

在这个问题中,我们给出了三个整数值 A、B 和 T。我们的任务是创建一个程序,用两个整数奇偶轮游戏。 

这两个整数值是:

T,表示游戏的回合数。
A 表示 player1
的值 B 表示player2的值

如果 T 的值为奇数,则 A 的值乘以 2。
如果 T 的值为偶数,则 B 的值乘以 2。
我们需要在最后找到并返回max(A, B)/ 的min(A, B) 值。

让我们举个例子来理解这个问题,

输入:  A = 3,B = 4,T = 3

输出:  1

解释: 

第一回合:T 为奇数,A 乘以 2,A = 6。
第二回合:T 为偶数,B 乘以 2,B = 8。
第三回合:T 为奇数,A 乘以 2,A = 12 .

A = 12 B = 4

max(A, B)= max(12, 4) = 12
min(A, B)= min(12, 4) = 4
max(A, B)/ min(A, B)= 12/ 8 = 1

解决方法: 

该问题的一个简单解决方案是在 T 轮转后计算 A 和 B 的值,然后返回max(A, B)/的值min(A, B)。这是采用 T 次迭代的有效解决方案。

但基于以下事实,它们可能是更有效的解决方案,即对于 T 的偶数值,新 A 的值是 N*A,而新 B 的值是 N*B。

这使的值max(A, B)  /min(A, B)一个常数,它等于
max(A, B)/ min(A, B)。

如果 T 的值为奇数,则 A 的值为 2*N*A,B 的值为 N*B。

这使得max(A, B)/min(A, B)的值等于 max(2A, B) / min(2A, B)。

问题的结果max(A, B)/ min(A, B)=

max(A, B)/ min(A, B), 如果 T 是偶数
 max(A, B)/ min(A, B), 如果 T 是奇数

 

程序来说明我们的解决方案的工作,

示例

#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<<"偶数游戏的返回值为 "<<EvenOddGame(A, B, T);

}

输出 -

偶数游戏的返回值为 3