Буду очень очень рад и благодарен тем, кто подкинет хоть какие-нибудь идеи:
Выполнить задания без хранения последовательности значений. 1. Дана непустая последовательность X ненулевых целых чисел, за которой следует 0. Вычислить величину: s=(n-1)*x1+n*x2+...+2*xn+1 . 2. Задано натуральное число k. Определить k-ю цифру последовательности: 1525125625..., в которой выписаны подряд степени 5.
Вторая задача решается на основе "инварианта"... Блин, помню, что-то было про степени пятерки - найти никак не могу... Поищи по слову "инвариант"... Где-то точно была если не эта же, то очень похожая задача...
ой, действительно немножко не так , вместо - в 1 слагаемом + : s=(n+1)*x1+n*x2+...+2*xn+1
насчет k в задании ничего не сказано...
klem4
15.11.2006 1:21
Задача: Нам надо ввести последовательность из N значений, и не сохраняя их вычислить
Цитата
s=(n+1)*x1+n*x2+...+2*xn+1
Как вводить последоватьелность указаний нет. -> Вводим последовательность с конца и получаем решение в три строчки:
uses crt;
var
x, n, s: Integer;
begin
clrscr;
n := 1;
s := 1;
repeat
readln(x);
if x <> 0thenbegin
inc(n);
s := s + x * n;
end;
until x = 0;
writeln('s = ', s);
readln;
end.
То есть если мы хоти ввести последовательность 1, 2, 3, 4, 5, 0, вводим 5, 4, 3, 2, 1, 0
Скорее всего не подойдет, но как вариант
Если последовательность в файле то все не сложнее:
uses crt;
type
TFile = Fileof Integer;
procedure CreateFile;
var
f: TFile;
i: Integer;
begin
Assign(f, 'C:\f.int');
Rewrite(f);
// заполняем файл ...
for i := 1to5do
write(f, i);
write(f, 0);
Close(f);
end;
function GetResult: Integer;
var
f: TFile;
X, i, s, n: Integer;
begin
Assign(f, 'C:\f.int');
Reset(f);
s := 1;
n := 1;
repeatfor i := 0to n - 1dobegin
Seek(f, i);
Read(f, X);
s := s + x;
end;
inc(n);
until x = 0;
Close(f);
GetResult := s;
end;
begin
Clrscr;
CreateFile;
writeln(GetResult);
readln;
end.
Во втором варианте опследовательность в файле должна хранится в "правильном" виде.
А вот как решить эту задачу, если последователность надо вводить с клавиатуры в "правильном варианте" пока ума не приложу =(( Если у кого есть мысли будет очень интересно посмотреть.
мисс_граффити
15.11.2006 1:58
Цитата
То есть если мы хоти ввести последовательность 1, 2, 3, 4, 5, 0, вводим 5, 4, 3, 2, 1, 0
"Дорогой пользователь! Запишите свои циферки на листочке и читайте в обратном порядке".
program summ;
var Sum,sum1,x:integer;
begin
writeln('x?');
readln(x);
sum:=1;
sum1:=0;
repeat
sum:=sum+sum1+2*x;
sum1:=sum1+x;
writeln('x?');
readln(x);
until (x=0);
writeln;
writeln(sum);
end.
klem4
15.11.2006 2:04
Да уж ... тупею ... Все гениальное просто как говорится
Только сумма изначально = 1 А ты 0 поставила
мисс_граффити
15.11.2006 2:06
Цитата(klem4 @ 14.11.2006 22:04)
Только сумма изначально = 1 А ты 0 поставила
Невнимательно прочитала Как всегда. Исправила.
Vania
15.11.2006 23:41
Благодарю за интересные предложения Попробую сдать)
принимаются дальнейшие варианты.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.