दिया गया कार्य शक्ति P से मारे जा सकने वाले लोगों की अधिकतम संख्या ढूंढना है। अनंत लोगों की एक पंक्ति पर विचार करें और उनमें से प्रत्येक का एक इंडेक्स नंबर है जो 1 से शुरू होता है।
sवें व्यक्ति की शक्ति s^2 द्वारा दर्शाई जाती है। 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, इसलिए चौथे व्यक्ति को नहीं मारा जा सकता। आउटपुट = 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 में 1 जोड़ें, अन्यथा ब्रेक करें;
- 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 फ़ंक्शन
int main(){
// शक्ति
int P = 30;
cout << "शक्ति P से मारे जा सकने वाले लोगों की अधिकतम संख्या: " << Max(P);
return 0;
}
आउटपुट
शक्ति P से मारे जा सकने वाले लोगों की अधिकतम संख्या: 4