สมมติว่าเรามีตัวเลข 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