Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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

최대(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