숫자 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