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=12B=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是奇数
程序来说明我们的解决方案的工作,
示例
#includeusing 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<<"偶数游戏的返回值为 "< 输出-
偶数游戏的返回值为 3