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