Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C++ เพื่อค้นหาจำนวนการอัพเกรดที่จะทำให้ HP ยิ่งใหญ่กว่าปัจจุบัน


สมมติว่าเรามีตัวเลข n ในเกม ตัวละครทุกตัวมีคะแนนสุขภาพ (HP) ที่แตกต่างกันสี่คะแนน หมวดหมู่มีดังนี้ −

  • Category A :ถ้า HP อยู่ในรูป (4n + 1)

  • Category B :ถ้า HP อยู่ในรูป (4n + 3)

  • Category C :ถ้า HP อยู่ในรูป (4n + 2)

  • Category D :ถ้า HP อยู่ในรูป 4n

4 หมวดหมู่เหล่านี้เรียงจากสูงสุดไปต่ำสุดเป็น A> B> C> D ดังนั้น หมวดหมู่ A คือสูงสุดและประเภท D คือต่ำสุด ขณะเล่นเกม ผู้เล่นสามารถเพิ่ม HP ของตัวละครได้ ตอนนี้ Amal ต้องการให้คุณเพิ่ม HP ของเขาได้มากที่สุด 2 (นั่นคือ 0, 1 หรือ 2) เราต้องค้นหาว่าเขาควรเพิ่ม HP ของเขามากแค่ไหนเพื่อให้มีหมวดหมู่สูงสุด?

ดังนั้นหากอินพุตเป็น n =98 เอาต์พุตจะเป็น 1 B เพราะ 98 อยู่ในหมวดหมู่ C เป็น (4*24 +2) โดยเพิ่มขึ้น 1 ตัวก็จะได้รับการอัปเกรดเป็นหมวดหมู่ B แต่ถ้า เราเพิ่มเป็น 2 จะเป็น 100 (4*25) ซึ่งเป็นหมวด D ดังนั้นที่ระดับสูงสุด 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