Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm bao nhiêu nâng cấp để làm cho HP lớn hơn hiện tại

Giả sử chúng ta có một số n. Trong một trò chơi, mỗi nhân vật có bốn điểm sức khỏe (HP) khác nhau. Các loại như sau -

  • Loại A:Nếu HP ở dạng (4n + 1)

  • Loại B:Nếu HP ở dạng (4n + 3)

  • Loại C:Nếu HP ở dạng (4n + 2)

  • Loại D:Nếu HP ở dạng 4n

4 danh mục này được sắp xếp từ cao nhất đến thấp nhất là A> B> C> D. Vì vậy, danh mục A là cao nhất và danh mục D là thấp nhất. Trong khi chơi trò chơi, người chơi có thể tăng HP của ký tự. Bây giờ, Amal muốn bạn tăng HP của anh ta nhiều nhất là 2 (tức là thêm 0, 1 hoặc 2). Chúng tôi phải tìm xem anh ta nên tăng HP của mình lên bao nhiêu để nó có loại cao nhất có thể?

Vì vậy, nếu đầu vào là n =98, thì đầu ra sẽ là 1 B, vì 98 thuộc loại C là (4 * 24 +2), bằng cách tăng nó lên 1, nó sẽ được nâng cấp lên loại B, nhưng nếu chúng tôi tăng nó lên 2, nó sẽ là 100 (4 * 25), đó là danh mục D. Vì vậy, ở mức tối đa danh mục B là có thể.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

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

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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);
}

Đầu vào

98

Đầu ra

1 B