Nhiệm vụ: tìm số người tối đa có thể tiêu diệt với sức mạnh P. Xét hàng người vô hạn, người thứ s có sức mạnh s². Tiêu diệt người sức mạnh s làm giảm sức mạnh của bạn đi s.
Ví dụ 1
Đầu vào** –
P = 20
Đầu ra** – 3
Giải thích** –
Người 1: sức mạnh 1 < 20 → tiêu diệt, P=19 Người 2: sức mạnh 4 < 19 → tiêu diệt, P=15 Người 3: sức mạnh 9 < 15 → tiêu diệt, P=6 Người 4: sức mạnh 16 > 6 → dừng Kết quả = 3
Ví dụ 2
Đầu vào** – 30
Đầu ra** – 4
Phương pháp
- Duyệt j từ 1 cho đến khi j² > P.
- Tích lũy tổng bình phương
s += j*j. - Nếu
s ≤ Pthì ans++, ngược lại break.
Ví dụ
#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;
}
int main() {
int P = 30;
cout << "Maximum number of people that can be killed with strength P are: " << Max(P);
return 0;
}
Đầu ra
Maximum number of people that can be killed with strength P are: 4