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.

Author: buitrunghieu

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 ra NO.
  • 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

There are no comments at the moment.