สมมติว่าเรามีตัวเลขสองตัว n และ k อมลและบิมลเล่นเกม กฎง่ายๆ อมลวาดไม้กางเขน n แทงเรียงกัน หลังจากนั้นผู้เล่นสลับกันขีดตัดไม้กางเขน k แทงจากซ้ายหรือขวาในแต่ละตา อมลเริ่มก่อน หากมีไม้กางเขนน้อยกว่า k แทงก่อนตาบางตา เกมจบ อมลชนะถ้าเขาทำตาได้มากกว่าบิมลอย่างเคร่งครัด เราต้องหาว่าใครจะชนะ
เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 10; k = 4 ผลลัพธ์จะได้ Bimal เพราะอมลขีด 4 แทง แล้วบิมลขีด 4 แทง เหลือแค่ 2 แทง อมลเล่นไม่ได้ ทั้งคู่ทำตาเท่ากัน อมลจึงไม่ชนะ
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
ถ้า floor ของ (n / k) เป็นเลขคู่ แล้ว: คืนค่า "Amal" คืนค่า "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