이 문제에서는 세 개의 정수 값 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
최대(A, B) =최대(12, 4) =12
최소(A, B) =최소(12, 4) =4
최대(A, B) / 최소(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)의 값을 다음과 같은 상수로 만듭니다.
최대(A, B) / 최소(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) =
최대(A, B) / 최소(A, B), T가 짝수인 경우
최대(A, B) / 최소(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<<"The return value of even odd game is "<<EvenOddGame(A, B, T); }
출력 -
The return value of even odd game is 3