Задача по циклам
Работа с циклическими конструкциями.
Пользователь вводит целое положительное число k. Найти наибольшее значение суммы
1^k + 2^k + 3^k + ... + n^k ,
Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа longint.
:tehnari_ru_281: Помогите, товарищи! Задачу надо решить через циклы. Я уже третьи сутки кукую, шляпа какая-то получается, ничего толкового. Сумма не выходит. :tehnari_ru_1019: В общем, помогите.
Вот моя прога.
Program Cikl;
uses crt;
const v=#179;
var s,k,i,z,x,c:longint;
begin
clrscr;
writeln ('---------------------------');
writeln (v,'Степень',v,' Значение суммы ',v);
writeln ('---------------------------');
for k:=1 to 16 do
begin
write (v,' ',k,' ',v,' ');
i:=1;
while s<exp(30*ln(2)) do
begin
s:=s+trunc(exp(k*ln(i)));
i:=i+1;
end;
writeln (s,' ',v);
writeln ('---------------------------');
end;
writeln;
write ('‚Введите положительное число k=');
readln (x);
if (x>=31) then writeln ('Наибольшая сумма равна s=1')
else
if (x>=20) and (x<31) then
z:=1+trunc(exp(x*ln(2)))
else begin
c:=1;
while z<exp(30*ln(2)) do
begin
z:=z+trunc(exp(x*ln(c)));
c:=c+1;
end;
writeln ('Наибольшая сумма равна s=',z);
end;
writeln ('Наибольшая сумма равна s=',z);
readln;
end.
Работа с циклическими конструкциями.
Пользователь вводит целое положительное число k. Найти наибольшее значение суммы
1^k + 2^k + 3^k + ... + n^k ,
Вывести на экран таблицу всех значений суммы, которые не выходят за пределы диапазона типа longint.
:tehnari_ru_281: Помогите, товарищи! Задачу надо решить через циклы. Я уже третьи сутки кукую, шляпа какая-то получается, ничего толкового. Сумма не выходит. :tehnari_ru_1019: В общем, помогите.
Вот моя прога.
Program Cikl;
uses crt;
const v=#179;
var s,k,i,z,x,c:longint;
begin
clrscr;
writeln ('---------------------------');
writeln (v,'Степень',v,' Значение суммы ',v);
writeln ('---------------------------');
for k:=1 to 16 do
begin
write (v,' ',k,' ',v,' ');
i:=1;
while s<exp(30*ln(2)) do
begin
s:=s+trunc(exp(k*ln(i)));
i:=i+1;
end;
writeln (s,' ',v);
writeln ('---------------------------');
end;
writeln;
write ('‚Введите положительное число k=');
readln (x);
if (x>=31) then writeln ('Наибольшая сумма равна s=1')
else
if (x>=20) and (x<31) then
z:=1+trunc(exp(x*ln(2)))
else begin
c:=1;
while z<exp(30*ln(2)) do
begin
z:=z+trunc(exp(x*ln(c)));
c:=c+1;
end;
writeln ('Наибольшая сумма равна s=',z);
end;
writeln ('Наибольшая сумма равна s=',z);
readln;
end.