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