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

โปรแกรม C++ หาชื่อผู้ชนะเกม stick crossing


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