Program task;
var x,i,sum:integer;
begin
readln(x);
sum := 0;
for i := 1 to 4 do
begin
sum := x mod 10 + sum;
x := x div 10;
end;
writeln(sum);
readln;
<span>end. </span>
Ответ:
program abc;
var m,o,k:int64;
begin
readLn(m);
o:=2000000000;
for i:integer:=trunc(sqrt(m))+1 downto 1 do
if (o>m div sqr(i)) and (m mod sqr(i) = 0) then
begin
o:=m div sqr(i);
k:=sqr(i);
end;
writeLn(k);
end.
Объяснение:
Все однозначные числа от 1 до 9 - это числа Армстронга.
Потому что однозначное число в 1 степени равно самому этому числу.
Сумма этих чисел 1+2+3+4+5+6+7+8+9=45.
Следующее число Армстронга - как раз 153 > 20.
Ответ 45
Для небольших значений k вполне подойдет очередь.
var i,n,k,lf,rt,bg,nd: integer;
<span> a: array[1..50000] of integer;
</span><span>begin
</span><span> write('N = '); readln(n);
</span><span> write('K = '); readln(k);
</span><span> for i:=1 to 50000 do a[i]:=0;
</span><span> bg:=1; nd:=1;
</span><span> a[bg]:=n;
</span><span> repeat
</span><span> n:=a[bg];
</span><span> if n mod 2 = 0 then lf:=(n div 2)-1
</span><span> else lf:=n div 2;
</span><span> if n mod 2 = 0 then rt:=lf+1
</span><span> else rt:=lf;
</span><span> inc(nd);
</span><span> a[nd]:=rt; inc(nd);
</span><span> a[nd]:=lf;
</span><span> inc(bg);
</span><span> dec(k);
</span><span> if nd>49500 then
</span><span> begin
</span><span> writeln('слишком большое k');
</span><span> exit;
</span><span> end;
</span><span> until k=0;
</span><span> writeln(lf,' ',rt);
end. </span>
N = 12456987
<span>K = 23198
379 379
</span>
N = 20
<span>K = 4
</span><span>2 2
</span><span>
N = 20
K = 5
1 2
</span>