Thứ Ba, 18 tháng 7, 2017

Hướng dẫn, bài Kiểm tra số luỹ thừa 2, vòng lặp

LT2 Số lũy thừa 2

Input
Output
128
true
1000
false
Cho số tự nhiên n. Kiểm tra số n có dạng 2k hay không?
Input: số tự nhiên n < 109.

Output: xuất “true” nếu n có dạng 2k, ngược lại xuất “false”


Gợi ý 1

Nhận xét: số lũy thừa 2 có tính chất khi chia một số lần cho 2 sẽ bằng 1. Ví dụ:

8/2 = 4, 4/2 = 2, 2/2 = 1 nên 8 có dạng lũy thừa 2.

Gợi ý 2

Thuật toán: Chia số n cho 2 khi còn lớn hơn 1. Sau một số lần chia, nếu  số đó bằng 1 thì số đó có dạng 2k.

Gợi ý 3:

while n>1 do
            n:=n/2;
if n<1 then writeln('false')
else writeln('true');

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.