Определим “календарные” числа фибоначчи таким образом: первые два из них текущим учебным годом (т.е. в данный момент это 2013 и 2014), а последующие составляются как обычно: каждое последующее число равно сумме двух предыдущих чисел. в итоге получаем последовательность 2013, 2014, 4027, 6041… какое число стоит в данной последовательности на 2014 месте и чему равна сумма цифр этого числа? сделать а паскале

РоузХз РоузХз    1   01.06.2019 05:40    0

Ответы
Попрлекс Попрлекс  02.07.2020 13:18
// Задача решается длинной арифметикой
VAR
   a,b,c: String;
   i, s: LongInt;

Procedure Sum(var a, b: String);
Var i, p, c1,c2: LongInt;
Begin
   while (Length(a) < Length(b)) do a := '0' + a;
   while (Length(b) < Length(a)) do b := '0' + b;

   p := 0;
   for i := Length(a) downto 1 do begin
      c1 := Ord(a[i]) - 48;
      c2 := Ord(b[i]) - 48;

      a[i] := Chr(48 + (c1 + c2 + p)mod 10);
      p := (c1 + c2 + p) div 10;  
   end;

   if (p > 0) then a := Chr(p + 48) + a;
End;

BEGIN
   a:= '2013';
   b:= '2014';

   for i := 3 to 2014 do begin
      Sum(a, b);
      c := a; a := b; b := c;  
   end;

   Writeln(c);

   s := 0;
   for i := 1 to Length(c) do
      s := s + Ord(c[i]) - 48;

   Writeln('Сумма цифр числа = ', s);
END.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика