Var m : array[0..6] of Integer; i,k,N : Integer; Begin For i:=0 to 6 do m[i]:=0; Readln(N); k:=6; While N>0 do Begin If N>=Power(2,k) then Begin N:=N-Trunc(Power(2,k)); Inc(m[k]); end else Dec(k); end; For i:=0 to 6 do Writeln(Power(2,i),' ',m[i],' шт.'); end.
Еще вариант: Const NN = 7; money : array[1..7] of Integer = (1,2,4,8,16,32,64); Var m : array[1..NN] of Integer; i,k,N : Integer; Begin For i:=1 to NN do m[i]:=0; Readln(N); k:=NN; While N>0 do Begin If N>=money[k] then Begin N:=N-money[k]; Inc(m[k]); end else Dec(k); end; For i:=1 to NN do Writeln(money[i],' ',m[i],' шт.'); end.
использовать Черепаха
алг
нач
вперед (60)
влево (65)
вперед (43)
вправо (20)
вперед (28)
вправо (45)
вперед (60)
вправо (90)
вперед (20)
вправо (90)
вперед (60)
влево (90)
вперед (20)
влево (65)
вперед (43)
вправо (65)
вперед (20)
вправо (45)
вперед (27)
вправо (45)
вперед (40)
вправо (45)
вперед (27)
влево (180)
вперед (27)
влево (45)
вперед (40)
вправо (90)
вперед (60)
вправо (45)
вперед (26)
вправо (20)
вперед (45)
влево (180)
вперед (45)
влево (155)
вперед (40)
вправо (45)
вперед (27)
влево (45)
вперед (40)
вправо (90)
вперед (39)
вправо (90)
вперед (40)
влево (90)
вперед (20)
влево (90)
вперед (40)
вправо (90)
вперед (39)
поднять хвост
вправо (90)
вперед (100)
опустить хвост
влево (45)
вперед (4)
влево (90)
вперед (4)
влево (90)
вперед (6)
влево (90)
вперед (4)
поднять хвост
кон
Объяснение:
Смотри картинку
i,k,N : Integer;
Begin
For i:=0 to 6 do m[i]:=0;
Readln(N);
k:=6;
While N>0 do
Begin
If N>=Power(2,k) then
Begin
N:=N-Trunc(Power(2,k));
Inc(m[k]);
end else Dec(k);
end;
For i:=0 to 6 do Writeln(Power(2,i),' ',m[i],' шт.');
end.
Еще вариант:
Const
NN = 7;
money : array[1..7] of Integer = (1,2,4,8,16,32,64);
Var m : array[1..NN] of Integer;
i,k,N : Integer;
Begin
For i:=1 to NN do m[i]:=0;
Readln(N);
k:=NN;
While N>0 do
Begin
If N>=money[k] then
Begin
N:=N-money[k];
Inc(m[k]);
end else Dec(k);
end;
For i:=1 to NN do Writeln(money[i],' ',m[i],' шт.');
end.