주어진 작업은 힘으로 죽일 수 있는 최대 사람 수를 찾는 것입니다. P. 무한한 사람이 있는 행을 고려하고 각 사람은 1부터 시작하는 색인 번호를 갖습니다.
s 번째 의 강점 사람은 s 2 로 표시됩니다. . s의 힘을 가진 사람을 죽이면 당신의 힘도 s만큼 감소합니다.
이제 예제를 사용하여 무엇을 해야 하는지 이해합시다 -
입력
P = 20
출력
3
설명
Strength of 1st person = 1 * 1 = 1 < 20, therefore 1st person can be killed. Remaining strength = P – 1 = 20 – 1 = 19 Strength of 2nd person = 2 * 2 = 4 < 19, therefore 2nd person can be killed. Remaining strength = P – 4 = 19 – 4 = 15 Strength of 3rd person = 3 * 3 = 9 < 15, therefore 3rd person can be killed. Remaining strength = P – 9 = 15 – 9 = 6 Strength of 4th person = 4 * 4 = 16 > 6, therefore 4th person cannot be killed. Output = 3
입력
30
출력
4
아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.
-
main() 함수에서 Int 유형의 P =30을 초기화합니다. 이는 Max() 함수에 강도와 passit을 저장하기 때문입니다.
-
Max() 함수에서 int 유형의 s =0 및 P =0을 초기화합니다.
-
j =1에서 j * j <=P
까지 루프 -
s =s + (j * j)를 입력하고 s <=P이면 ans에 1을 더하고, 그렇지 않으면 break;
-
반환합니다.
예시
#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