Hướng dẫn giải của [200 đề thầy Đức] Bài 50: 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 có 4 chữ số. Tính tổng các chữ số của n rồi kiểm tra tổng đó có phải số chính phương không. In YES nếu đúng, NO nếu sai.

Cách làm
  • Tính tổng các chữ số: lấy chữ số hàng đơn vị bằng n % 10, cộng dồn vào tổng, rồi bỏ chữ số đó đi bằng cách chia n cho 10.
  • Tổng các chữ số của số có 4 chữ số không vượt quá 36, nên có thể thử lần lượt các số i từ 0 với i * i <= tổng.
  • Nếu tìm được i sao cho i * i bằng đúng tổng thì tổng là số chính phương, in YES. Ngược lại in NO.

Ví dụ: 1233 có tổng 9 = 3 * 3 nên YES. 5534 có tổng 17, không phải số chính phương nên NO.

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

int main() {
    int n;
    cin >> n;

    // Tính tổng các chữ số của n
    int tong = 0;
    int tam = n;
    while (tam > 0) {
        tong += tam % 10;
        tam /= 10;
    }

    // Kiểm tra tong có phải số chính phương không: thử các số i với i*i <= tong
    bool laChinhPhuong = false;
    for (int i = 0; i * i <= tong; i++) {
        if (i * i == tong) {
            laChinhPhuong = true;
        }
    }

    if (laChinhPhuong) {
        cout << "YES\n";
    } else {
        cout << "NO\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.