Найти член последовательности - Free Pascal (581)

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста в задаче: Каждый член последовательности десятичных цифр d1, d2, d3..., начиная с четвёртого, равен последней цифре суммы трёх предыдущих. По заданным d1, d2, d3 найти N-й член последовательности. Ограничения: 1 <= N <= 1015. Входные данные В первой строке находятся цифры d1, d2, d3, разделённые пробелами, во второй - число N. Выходные данные Вывести одну цифру - dN. Вот что нарешали, но ничего не выводит почему-то.
uses crt;
 
var a,b,c,d,p,a1,b1,c1,n,i,k:integer;
 
begin
 
read (a,b,c);
 
read (p);
 
a1:=a; b1:=b; c1:=c;
 
d:=0;
 
 while    (a<>b) or (b<>c) or (c<>d) do begin
 
  a1:=b1;
 
  b1:=c1;
 
  c1:=d;
 
  p:=p+1;
 
  end;
 
 for i:=4 to (k mod p) do
 
 begin
 
 d:=(a+b+c)mod 10;
 
  a:=b;
 
  b:=c;
 
  c:=d;
 
  end;
 
  if k=1 then d:=a else begin
 
  if k=2 then d:=b else  begin
 
  if k=3 then d:=c;
 
  end;
 
  end;
 
 write (d);

 end.

Решение задачи: «Найти член последовательности»

textual
Листинг программы
var
  n: Int64;
  a, b, c, d, i: Integer;
begin
  ReadLn(a,b,c); ReadLn(n);
  n:=n mod 124;
  case n of
    0: n:=124;
    1: d:=a;
    2: d:=b;
    3: d:=c;
  end;  
  for i:=4 to n do begin
    d:=(a+b+c) mod 10;
    a:=b; b:=c; c:=d;
  end;
  WriteLn(d);
end.

Объяснение кода листинга программы

В этом коде задача состоит в том, чтобы найти член последовательности чисел, заданной в виде трех строк, используя номер этого члена в качестве целого числа от 0 до 123. Код начинается с чтения трех строк чисел и числа n с помощью функции ReadLn. Затем число n приводится к модулю 124 с помощью операции n mod 124. Это делается для того, чтобы получить значение от 0 до 123. Далее используется конструкция case для определения, какому числу соответствует полученное значение n. Если n равно 0, то n присваивается значение 124. Если n равно 1, то d присваивается значение a. Если n равно 2, то d присваивается значение b. Если n равно 3, то d присваивается значение c. Это делается для того, чтобы установить начальное значение d. Затем следует цикл for, который начинается с i=4 и продолжается до n. Внутри цикла d вычисляется как сумма a, b и c, взятая по модулю 10. Затем значения a, b и c обновляются, чтобы соответствовать следующему члену последовательности. Наконец, значение d выводится на экран с помощью функции WriteLn.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы