Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2012, 19:33   #1
daniil123
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 23
По умолчанию Три единицы подряд

По данному числу N определите количество последовательностей из нулей и единиц длины N, в которых никакие три единицы не стоят рядом.
Во входном файле написано натуральное число N, не превосходящее 35.
Выведите количество искомых последовательностей.
Пример:
Вход:
4
Выход:
13
daniil123 вне форума Ответить с цитированием
Старый 26.01.2012, 19:46   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

с комбинаторикой знакомы?... или нужно это все прогонять через комп?...
это так.. вопрос для дальнейшего решения каким путем идти...)
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.01.2012, 22:25   #3
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

мда уж, ну если наработок нет, то разбирайся:
Код:
var a:array[0..4] of int64;
    i,n:integer;
begin
  read(n);
  a[0]:=1;
  a[1]:=2;
  a[2]:=4;
  a[3]:=7;
  for i:=4 to n do 
    begin
      a[4]:=a[3]*2-a[0];
      a[0]:=a[1];
      a[1]:=a[2];
      a[2]:=a[3];
      a[3]:=a[4];
    end;
  if n>3 then write(a[4]) else write(a[n]);  
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 26.01.2012, 22:47   #4
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Так код конечное красивее, но в первом разобраться легче.
Код:
var a:array[0..4] of int64:=(1,2,4,7,0);
    i,j,n:integer;
begin
  read(n);
  for i:=4 to n do 
    begin
      a[4]:=a[3]*2-a[0];
      for j:=0 to 3 do a[j]:=a[j+1];
    end;
  if n>3 then write(a[4]) else write(a[n]);  
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить рисунок:три лапки справа вертикально,три лапки слева горизонтально) Glebio95 Паскаль, Turbo Pascal, PascalABC.NET 6 02.12.2011 11:22
Три подряд отриц. елемента. паскаль Wild_klas Помощь студентам 2 16.12.2010 22:42
как создать матрицу три на три в мемо (делфи) Lordigan Помощь студентам 0 15.03.2010 18:37
единицы измерения ulito4ka Microsoft Office Word 2 13.04.2009 15:05
черный ящик, на три входа и на три выхода Shanson Помощь студентам 7 30.01.2008 09:45