Mọi người giúp em ạ. em hứa sẽ vote 5 sao nếu đúng
Viết phương trình pascal: Thầy giáo cho 1 số TN n và ghi trên bảng số 0.Mỗi lần một bạn lên bảng được tăng số đã viết trên bảng 1 đơn vị hoặc tăng gấp đôi. Hỏi sau ít nhất bao nhiêu lần lên bảng sẽ được số TN n
Input: số Tn n
Output: số lần lên bảng ít nhất
VD: n=8
Lần 1: 0 tăng thêm 1: 0+1=1
Lần 2: 1 tăng thêm 1: 1+1=2
Lần 3: 2 gấp đôi: 2*2=4
Lần 4: 4 gấp đôi: 4*2=8
Vậy số lần lên bảng ít nhất là 4 nên Input là 4 và Output là 8
program ct;
uses crt;
var n,d,k,S:integer;
begin clrscr;
write(‘Nhap so n: ‘); readln(n);
k:=n div 2;
repeat
if (k mod 2=1) and (n mod 2=0) then
S:=S+1;
if (S mod 2=1) or (S=0) then
begin
S:=S+1;
inc(d);
end
else
begin
if S*2>n then S:=S+1 else S:=S*2;
inc(d);
end;
if S+1=n then
begin
S:=S+1;
inc(d);
end;
until S=n;
write(‘So lan len bang it nhat la: ‘,d);
readln;
end.
Học tốt!
uses crt;
var n,tong,dem:longint;
begin
clrscr;
write(‘n=’);readln(n);
tong:=2; dem:=2;
while tong*2<=n do begin tong:=tong*2; inc(dem); end;
while tong<n do begin inc(tong); inc(dem); end;
write(‘So lan len bang it nhat la: ‘);
if n=1 then write(1) else write(dem);
readln
end.
//////////////////////////////////////////////////////////////////
Test: