在这个问题中,我们给出了三个整数值 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