Такая вот задачка,последняя за курс Паскаля.Проверьте,пожалуйста,решение,как то ответ мне не очень нравится,там значение можно ввести только от 1 до 2х.Заранее спасибо!
Дано натуральное n. Получить (1+n^1)(2+n^2)...(n+n^n)
Вот как у меня получилось-
var n, i, p: integer; function power(c: integer): integer; var i,c2: integer; begin c2:=c; for i:=2 to c do c2:=c2*c; power:=c2; end; begin readln(n); p:=1; for i:=1 to n do p:=p*(i+power(i)); writeln(p); end.
IUnknown
5.05.2012 18:11
У тебя не то считалось в Power. Надо не i возводить в степень i, а n возводить в степень i.
var n, i : Integer; p : longint;
function power(c: integer): longint; var i : Integer; c2 : longint; begin c2:=1; for i:=1 to c do c2:=c2*n; power:=c2; end;
begin readln(n); p:=1; for i:=1 to n do p:=p*(i+power(i)); writeln(p); end.
Цитата
ответ мне не очень нравится,там значение можно ввести только от 1 до 2х
Что ж ты хочешь, при такой функции-то. Мало того, что при вводе 4 у тебя последняя скобка = (4 + 44) = 260, так еще и предыдущая = 67, вторая = 18 и первая = 5. И сколько получится, если это всё перемножить? 1567800.
В Integer уже не помещается, разве что в LongInt. А при n = 5 произведение и в LongInt уже не помещается.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.