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.
Дважды подряд записать трехзначное число — это значит умножить его на 1001. Умножив на 1000, мы получаем исходное число с тремя нулями. Добавляем к полученному числу еще один раз исходное число. Получается число, в записи которого дважды повторяются цифры исходного числа. Последовательно разделить на 13, 11 и 7 – значит разделить число на произведение 13 * 11* 7, которое равно 1001. Получается, что мы число сначала умножаем на 1001, а после делим на 1001. Естетственно, у нас получится исходное число: (n * 1001) / (13 * 11 * 7) = (n * 1001) / 1001 = n.
3500 и 1300
Объяснение:
2200 + 1300 = 3500 (предоставлены страницы и по углю и по руде)
2900 - 1600 = 1300 (из всех страниц находим только по стульям)