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

HP를 현재보다 크게 만들기 위한 업그레이드 수를 찾는 C++ 코드

<시간/>

숫자 n이 있다고 가정합니다. 게임에서 모든 캐릭터는 4개의 서로 다른 체력(HP)을 가지고 있습니다. 범주는 다음과 같습니다 -

  • 카테고리 A :HP가 (4n + 1)

    형식인 경우
  • 카테고리 B :HP가 (4n + 3)

    형식인 경우
  • 카테고리 C :HP가 (4n + 2)

    형식인 경우
  • 범주 D:HP가 4n

    형식인 경우

이 4개의 범주는 A> B> C> D의 순서대로 가장 높은 것부터 낮은 것 순으로 정렬됩니다. 따라서 범주 A가 가장 높고 범주 D가 가장 낮습니다. 게임을 플레이하는 동안 플레이어는 캐릭터의 HP를 증가시킬 수 있습니다. 이제 Amal은 자신의 HP를 최대 2만큼(즉, 0, 1 또는 2만큼) 증가시키길 원합니다. 가능한 가장 높은 카테고리가 되도록 HP를 얼마나 높여야 하는지 찾아야 합니까?

따라서 입력이 n =98과 같으면 출력은 1B가 됩니다. 98은 (4*24 +2)로 카테고리 C에 있으므로 1만큼 증가시키면 카테고리 B로 업그레이드되지만, 2로 늘리면 카테고리 D인 100(4*25)이 됩니다. 따라서 최대 카테고리 B가 가능합니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

if n mod 4 is same as 2, then:
   return "1 B"
Otherwise
   return |(n mod 4) - 1| and 'A'

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
void solve(int n){
   if (n % 4 == 2)
      cout << "1 B";
   else
      cout << abs(n % 4 - 1) << " A";
}
int main(){
   int n = 98;
   solve(n);
}

입력

98

출력

1 B