Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số người tối đa có thể tiêu diệt với sức mạnh P trong C++


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 ≤ P thì 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