Tháng Mười Hai 23, 2018
Số chính phương trong mảng
Đề bài: Cho một mảng n số nguyên. Tìm và in ra các số chính phương trong mảng.
Đầu vào: Dòng đầu tiên là số nguyên n. Dòng thứ 2 là mảng n số nguyên, các số cách nhau bởi dấu cách.
Đầu ra: Một dòng gồm nhiều số cách nhau bởi dấu cách là các số chính phương trong mảng. Các số này theo thứ tự như thứ tự trong mảng ban đầu. Nếu dãy không có số chính phương, in ra “NOT FOUND”
Ví dụ:
input: 3 4 3 2 output: 4
Bạn chưa đăng nhập? Đăng nhập để Submit ngay!
12 Comments
Add a Comment
Bạn phải đăng nhập để gửi phản hồi.
a oi, s e nộp bài tới text 2 running xong nó mất luôn vậy ạ
Thử lại xem sao.
Thầy ơi em góp ý 1 chút: test case của thầy có đoạn test cả số 0 => nhận nó là SCP. Nhưng SCP ko có số 0 thầy nha ^^. Định nghĩa: SCP là sốmà chỉ khi bình phương căn bậc 2 của nó trở thành hình vuông. Nguồn gốc của từ sqrt = square root, bắt nguồn từ hình vuông.
Ah, Cảm ơn em nhé. Mình đã sửa lại.
anh ơi, sao test 4 của em nó chạy ở trong code::blocks thì nó ra kết quả đúng mà ở đây nó lại sai ạ, em copy y chang từ code::blocks ra rồi ạ
Có thể lỗi trong quá trình chạy ở một số test đặc biệt nhé.
ad ơi, bài của em là như thế này, em để
int kt(int n)
{ int m=sqrt(n);
for(int i=1;i<=m;i++)
{
if(m*i==n)
return 1;
}
return 0;
}
như thế này thì kết quả đúng
-khi em để return 0 trước return 1:
int kt(int n)
{ int m=sqrt(n);
for(int i=1;i<=m;i++)
{
if(m*i!=n)
return 0;
}
return 1;
}
như thế này thì sai
****(khi em post bài lên nó hay mất chữ, nên ad thêm chữ giùm em)
Bạn chạy bằng tay đi sẽ thấy sai ở đâu.
bằng tay là sao ad
Là chạy bằng tay ấy. Viết các bước, các giá trị của biến ra giấy từng bước một.
góp ý về lời giải:
Ở hàm check của ad có đoạn:
—
int m = (int)sqrt(n);
if(n > 0 && m*m == n) return 1;
—-
Theo tôi ad nên check n>0 trước rồi mới thực hiện phép khai căn.
thân,
Cảm ơn bạn.