দেওয়া কাজ হচ্ছে শক্তি P দিয়ে সর্বোচ্চ কতজন লোক কিল করা যায় তা বের করা। একটি সারি বিবেচনা করুন যেখানে অসংখ্য লোক আছে এবং তাদের একটি ইনডেক্স নম্বর আছে ১ থেকে শুরু করে।
sth লোকের শক্তি হচ্ছে s2 দিয়ে রিপ্রেজেন্ট করা। একজন লোককে s শক্তি দিয়ে কিল করলে আপনার শক্তিও s কমানো হবে।
উদাহরণ দিয়ে বুঝি −
ইনপুট
P = 20
আউটপুট
3
ব্যাখ্যা
১ম লোকের শক্তি = 1 * 1 = 1 < 20, তাই ১ম লোক কিল করা যায়। বাকি শক্তি = P – 1 = 20 – 1 = 19 ২য় লোকের শক্তি = 2 * 2 = 4 < 19, তাই ২য় লোক কিল করা যায়। বাকি শক্তি = P – 4 = 19 – 4 = 15 ৩য় লোকের শক্তি = 3 * 3 = 9 < 15, তাই ৩য় লোক কিল করা যায়। বাকি শক্তি = P – 9 = 15 – 9 = 6 ৪র্থ লোকের শক্তি = 4 * 4 = 16 > 6, তাই ৪র্থ লোক কিল করা যায় না। Output = 3
ইনপুট
30
আউটপুট
4
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি নিম্নরূপ
main() ফাংশনে P = 30 ইনিশিয়ালাইজ করা হয় int টাইপে যা শক্তি সংরক্ষণ করবে এবং Max() ফাংশনে পাস করা হয়।
Max() ফাংশনে s = 0 এবং P = 0 ইনিশিয়ালাইজ করা হয় int টাইপে।
j = 1 থেকে j * j <= P পর্যন্ত লুপ।
s = s + (j * j) এবং যদি s <= P হয় তবে ans-এ ১ যোগ, অন্যথায় ব্রেক।
ans রিটার্ন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int Max(int P){
int s = 0, ans = 0;
for (int j = 1; j * j <= P; j++){
s = s + (j * j);
if (s <= P)
ans++;
else
break;
}
return ans;
}
//main function
int main(){
//Strength
int P = 30;
cout << "Maximum number of people that can be killed with strength P are: "<<Max(P);
return 0;
}আউটপুট
Maximum number of people that can be killed with strength P are: 4