Var numb,k,summa:integer; begin readln(numb); for k:= 1 to (numb-1) do begin if numb mod k = 0 then summa:=summa+k; end; if summa = numb then writeln('Совершенное') else writeln('Несовершенное'); end.
Чтобы излишне не терять точность и не тратить лишнее время на вычисления, выведем рекуррентную формулу.
В задании не сказано точно, как определять условие окончания суммирования. Примем, что суммирование завершается, если очередной член ряда не может изменить накопленную сумму больше, чем на ε, т.е. |aₓ| ≤ ε.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var (ai1,eps,s,i):=(3/2,0.001,3/2,2); while true do begin var a:=3/(4*i-2)*ai1; if Abs(a)>eps then begin i+=1; s+=a; ai1:=a end else Break end; Writeln('S = ',s:0:3) end.
дом 1 2 3 4 5 цвет- жёлтый синий красный белый зелёный национальность- норвежец украинец англичанин испанец японец напиток- вода чай молоко сок кофе сигареты-Kool Chesterfield Old-Gold Lucky Strike Parliament животные- лиса лошадь улитки собака зебра№2
№2
Чтобы стакан мог оказаться между сосудами с чаем и молоком, он должен переместиться на место 3 (чашка на место 4), на месте 2 он будет между минеральной водой и еще чем-нибудь.
Таким образом, он будет встанет точно в середине. Из этого можно сделать вывод, что в стакане находится кофе. Молоко из условия задачи, во-первых, рядом со стаканом, во-вторых, рядом с сосудом с квасом. Значит, в кружке находится чай, в чашке – молоко, в кувшине – квас.
begin
readln(numb);
for k:= 1 to (numb-1) do
begin
if numb mod k = 0 then
summa:=summa+k;
end;
if summa = numb then
writeln('Совершенное')
else
writeln('Несовершенное');
end.