Hiển thị các bài đăng có nhãn Hướng dẫn. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Hướng dẫn. Hiển thị tất cả bài đăng

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');