Определим “календарные” числа Фибоначчи таким образом: первые два из них задаются текущим...

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


Информатика (67 баллов) | 26 просмотров
0

ты бы хотяб условия чуть изменила, а то просить людей вместо себя задачу решить, а потом за свою выдавать в то время как остальные сами решают и на 100 строк расписывают это вершина подлости такшто я сейчас тебя сдаю отправив в мехмат с двух разных почтовых ящиков по несколько одинаковых писем (такое там заметят) со ссылкой на эту страницу. А т. к. там работ не так уж и много присылают, то твою найдут. Удачи сделать новую программу за 1 день, если конечно вовремя прочтёшь этот комментарий.

Дан 1 ответ
0 голосов
// Задача решается длинной арифметикой
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.
(733 баллов)