สมมติว่าเรามีตัวเลขสองตัว a และ b มีลูกอมจำนวน a และ b อยู่ในมือของ Amal และ Bimal Amal มอบขนม 1 เม็ดให้กับ Bimal และ Bimal มอบขนมสองชิ้นให้กับ Amal ในคราวถัดไป Amal ให้ลูกอม 3 เม็ดและ Bimal ให้ 4 เม็ดเป็นต้น สิ่งนี้ดำเนินต่อไปจนถึงช่วงเวลาที่หนึ่งในนั้นไม่สามารถให้ขนมในปริมาณที่เหมาะสมได้ พวกเขาไม่คิดว่าขนมที่พวกเขาได้รับจากคู่ต่อสู้เป็นของตัวเอง เราต้องหาว่าใครเป็นคนแรกไม่สามารถให้ขนมในปริมาณที่เหมาะสมได้
ดังนั้นหากอินพุตเป็นเหมือน a =7; b =6 จากนั้นผลลัพธ์จะเป็น Amal เพราะตอนแรก Amal ให้ 1 Bimal ให้ 2 จากนั้น Amal ให้ 3 และ Bimal ให้ 4 ตอนนี้ในเทิร์นนี้ Amal ต้องให้ 5 ลูกอม แต่เขามีเพียง 4 เท่านั้น
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
x := square root of a if x * (x + 1) > b, then: 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