Editorial for C Bài 4.C2: Tổng bình phương
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Lời giải chi tiết
Ý tưởng: Ta lấy căn bậc hai của số \(a\) làm mốc (đặt tên là limit
), Sau đó duyệt \(i\) từ 1 đến limit
. Với mỗi số \(i\), ta sẽ có 2 số \(i.i\) và \(a - i.i\). Nếu sau vòng lặp mà tồn tại một giá trị \(a - i.i\) nào đó là số chính phương thì in kết quả là YES
, ngược lại thì in ra NO
.
Các bước giải:
- Bước 1: Khai báo và nhập vào số \(q\) thể hiện số truy vấn, sau đó chạy truy vấn.
- Bước 2: Khai báo và nhập vào số \(a\), sau đó khởi tạo một biến
limit
và đặt giá trị của biến bằng \(\sqrt{a}\). - Bước 3: Sử dụng vòng lặp để duyệt \(i\) từ 1 đến
limit
. Với mỗi sối
, ta sẽ tạo thêm một biến có giá trị bằng \(a - i . i\). Rồi kiểm tra xem giá trị của biến mới tạo có phải là số chính phương hay không. Nếu có thì xác nhận là tồn tại một số thỏa mãn yêu cầu đề bài rồi break vòng lặp. - Bước 4: Nếu xác nhận được có số thỏa mãn yêu cầu đề bài thì in ra
YES
, ngược lại ta in raNO
. - Bước 5: Xuống dòng để tiếp tục với các truy vấn sau đó.
Đăng ký khóa học: https://www.facebook.com/clblaptrinhfullhouse
SĐT liên hệ: 0372229686
Youtube: CLB Lập Trình Full House
Fullhouse dev đồng hành trên từng dòng code
Comments