Editorial for C++ Bài 2.B6: Số chính phương
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 if
và else
, 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ệnhcout
để 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ệnhcout
để 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