สมมติว่าเรามีตัวเลขสองจำนวน a และ b มีลูกอม a และ b ลูกในมือของอมลและบิมลตามลำดับ อมลเสนอ 1 ลูกให้บิมล บิมลให้ 2 ลูกกลับไป ในรอบถัดไป อมลให้ 3 ลูก บิมลให้ 4 ลูก และต่อไป จนกระทั่งหนึ่งในสองคนไม่สามารถให้จำนวนที่ถูกต้องได้ พวกเขาไม่นับลูกอมที่ได้จากคู่แข่งเป็นของตัวเอง เราต้องหาว่าใครเป็นคนแรกที่ให้ไม่พอ
เช่น ถ้าอินพุตคือ a = 7; b = 6 เอาต์พุตจะเป็น Amal เพราะ เริ่มต้นอมลให้ 1 บิมลให้ 2 ต่อมาอมลให้ 3 บิมลให้ 4 ตอนนี้รอบของอมลต้องให้ 5 ลูก แต่เขาเหลือแค่ 4 ลูก
ขั้นตอนการแก้ปัญหา
x := รากที่สองของ a
if x * (x + 1) > b:
return "Bimal"
otherwise:
return "Amal"
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
string solve(int a, int b) {
int x = sqrt(a);
if (x * (x + 1) > b)
return "Bimal";
else
return "Amal";
}
int main() {
int a = 7;
int b = 6;
cout << solve(a, b) << endl;
}
อินพุต
7, 6
เอาต์พุต
Amal