Hướng dẫn giải của TIN10_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 (N không quá 10^9), kiểm tra N có phải là số chính phương hay không. In "True" nếu đúng, "False" nếu sai.

Cách làm

Số chính phương là bình phương của một số nguyên dương. Ta thử lần lượt các số i = 1, 2, 3, ... và dừng khi i · i lớn hơn N.

Nếu có i nào mà i · i bằng đúng N thì N là số chính phương.

Vì N đến 10^9 nên i chỉ cần chạy tới khoảng 31623, chương trình chạy rất nhanh. Dùng long long để tránh tràn số khi nhân i · i.

Ví dụ N = 9: có i = 3 mà 3 · 3 = 9 nên in "True". N = 26: không có i nào thỏa mãn nên in "False".

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    cin >> n;
    // Thu lan luot cac so i = 1, 2, 3, ... cho den khi i*i > n
    bool la_chinh_phuong = false;
    for (long long i = 1; i * i <= n; i++) {
        if (i * i == n) {
            la_chinh_phuong = true;
        }
    }
    if (la_chinh_phuong) {
        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.