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.
1. Современное решение, когда можно решить "в одну строку"
// PascalABC.NET 3.2, сборка 1439 от 09.05.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln('S=',ReadSeqInteger(3).Select(n->n.ToString .Where(d->Pos(d,'13579')>0)).SelectMany(c->c) .Select(c->c.ToDigit).Sum) end.
Пример 252 337 105 S=24
2. А примерно вот так учат писать в школе - долго и длинно (да и не особо понятно)
var m,i,j,s,d:integer; begin s:=0; for i:=1 to 3 do begin Read(m); for j:=1 to 3 do begin d:=m mod 10; if d mod 2<>0 then s:=s+d; m:=m div 10 end end; Writeln('S=',s) end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку