Hướng dẫn giải của IF05: Số chính phương


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho số nguyên dương N với ~N \le 10^9~. Cần kiểm tra N có phải là số chính phương (bình phương của một số nguyên dương) hay không.

Cách làm
  • Đọc số N vào biến kiểu long long.
  • Thử lần lượt các số i = 1, 2, 3, ... cho đến khi i*i vượt quá N.
  • Nếu có i mà i*i đúng bằng N thì N là số chính phương, in True. Ngược lại in False. Lưu ý: chỉ cần thử i đến khoảng căn bậc hai của N (khoảng 31623) nên chương trình chạy rất nhanh.
#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    cin >> n;
    bool laChinhPhuong = false;
    // Thử lần lượt các số i, nếu i*i đúng bằng n thì n là số chính phương
    for (long long i = 1; i * i <= n; i++) {
        if (i * i == n) {
            laChinhPhuong = true;
        }
    }
    if (laChinhPhuong) {
        cout << "True\n";
    } else {
        cout << "False\n";
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.