สมมติว่าเรามีตัวเลขสองตัว n และ k Amal และ Bimal กำลังเล่นเกม กฎมีความเรียบง่าย อามาลดึง n แท่งติดต่อกัน หลังจากนั้นผู้เล่นผลัดกันตัดไม้ k ออกจากซ้ายหรือขวาในแต่ละตา อามาลเริ่มเกม หากมีแท่งไม้น้อยกว่า k แท่งก่อนถึงเทิร์น เกมจะจบลง Amal ชนะถ้าเขาทำการเคลื่อนไหวมากกว่า Bimal อย่างเคร่งครัด เราต้องค้นหาว่าใครจะเป็นผู้ชนะ
ดังนั้นหากอินพุตเป็นเหมือน n =10; k =4 จากนั้นผลลัพธ์จะเป็น Bimal เนื่องจากอามาลตัดไม้ได้ 4 ท่อน Bimal จึงตัดไม้ได้ 4 ท่อน หลังจากนั้นเหลือเพียง 2 ไม้เท่านั้น อามาลไม่สามารถเคลื่อนไหวได้ ผู้เล่นมีจำนวนการเคลื่อนไหวเท่ากัน ดังนั้น Amal จึงไม่ชนะ
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
if floor of (n / k) is even, then: return "Amal" return "Bimal"
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; string solve(int n, int k) { if ((n / k) % 2 != 0) { return "Amal"; } return "Bimal"; } int main() { int n = 10; int k = 4; cout << solve(n, k) << endl; }
อินพุต
10, 4
ผลลัพธ์
Bimal