BÀI 1. BIẾN ĐỔI SỐ
An có một số nguyên dương n, bạn ấy vừa nghĩ ra một thuật toán mới để biến đổi số
n về giá trị 1. Một phép biến đổi số n được thực hiện như sau:
- n = n div 2 nếu n là số chẵn
- n = 3n + 1 nếu n là số lẻ
Phép biến đổi được lặp lại cho đến khi n = 1.
Ví dụ: n = 13: các phép biến đổi lần lượt được thực hiện như sau:
13 40 20 10 5 16 8 4 2 1
An muốn biết với số nguyên dương n cho trước, cần thực hiện bao nhiêu bước biến
đổi để n nhận giá trị bằng 1.
Em hãy lập trình trả lời giúp An câu hỏi của bạn ấy!
INPUT
Một dòng duy nhất chứa số nguyên dương n (1 ≤ n ≤ 1000)
OUTPUT
Một dòng duy nhất chứa kết quả tìm được.
Ví dụ:
INPUT OUTPUT
13 9
mấy bài này bro lấy đâu vậy chứ giống 100% đề thi thử cấp tỉnh của em quá
const fi='input.inp'
fo='output.out'
var f1,f2:text;
n,dem:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
dem:=0;
repeat
if n mod 2=0 then
begin
n:=n div 2;
inc(dem);
end
else
begin
n:=3*n+1;
dem:=dem+1;
end;
until n=1;
writeln(f2,dem);
close(f1);
close(f2);
end.