Editorial for C++ Bài 2.B6: Số chí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.

Lời giải chi tiết:

Đầu tiên, các bạn cần khai báo kiểu dữ liệu của số nguyên dựa vào khoảng giá trị đề bài đưa \(N (N<=10^{18})\).

Bước 2, các bạn dùng lệnh cin để nhập số vừa khai báo ở trên.

Bước 3, tính căn bậc 2 của số nguyên dương vừa nhập, sử dụng lệnh sqrt() để tính, lưu ý là lưu bình phương này ở kiểu dữ liệu số nguyên.

Bước 4, các bạn sử dụng câu lệnh if, else ifelse, chú ý điều kiện của bài này có các trường hợp:

  • Trường hợp 1 là nếu bình phương căn bậc 2 vừa tính ở bước 3 mà bằng số ban đầu, in ra Yes, sử dụng câu lệnh cout để in ra.

  • Trường hợp 2 là nếu không bằng, tức không phải số chính phương, in ra No, sử dụng câu lệnh cout để in ra.

Giải thích: Khi tính căn bậc 2 trong lập trình mà lưu ở dạng số nguyên, kết quả sẽ bị làm tròn. Nếu bình phương ngược lại không bằng có nghĩa kết quả vừa tính nếu không làm tròn thì không phải là só nguyên.


Comments

There are no comments at the moment.