Пират положил в сундук некое количество золотых монет. На 2-ой год

Пират положил в сундук некое количество золотых монет. На 2-ой год он вынул из сундука сколько-то монет. Начиная с третьего года, он прибавлял столько монет ,сколько было в сундуке два года назад.
Нужно написать программку, которая обусловит, сколько монет было в сундуке в первый и во 2-ой год , в сундуке будет 5,2,7,9,,16,25 .... монет.
Формат входного файла:
Входной файл INPUT.TXT содержит числа Х (3lt;=Xlt;=20) и Y(1lt;=Ylt;=32767), записанные через пробел .
Формат выходного файла:
В выходной текстовый файл OUTPUT.TXT записываются через пробел количество монет в первый и второй года. Гарантируется, что решение всегда есть. Если решений несколько, то вывести хоть какое.

Задать свой вопрос
1 ответ
1. Вопрос задан коряво. Задачка эта величается сундук Билли Бонса, ряд
5,2,7,9,16,25 - это пример последовательности числа монет в сундуке, если в 1-ый год монет 5, во 2-ой - две.
2. Вот программа на АБС-Паскале, не лучшая по ряду моментов, но рабочая. Из необыкновенностей - выводит решения только если если во 2-ой год монет становится меньше, чем в 1-ый. Есть решения при нулевом количестве взятых во второй год монет и при отрицательном. Если такие решения необходимы - то условие в  "if (j div n) lt; i then" надо поменять
Программка неэффективна, вместо решения диофантова уравнения по Евклиду используется тупой перебор, но по условиям он ограничен, и его можно себе позволить.
Выводятся также все решения, если необходимо одно - прерывайте цикл по нахождению первого.
---------------------
program БиллиБонс;
//
const
  maxYear = 20;
  maxMoney = 32767;

var
  a, b: array [1..maxYear] of integer;
  m, n, x, y: integer;
  f1, f2: text;
  s: string;

begin
 
  assign(f1, 'input.txt');   // устанавливаем связь меж файловой переменной и методом к файлу
  reset(f1);  // открытие на чтение файла
  read(f1, x);
  read(f1, y);
  close(f1); // накрываем файл
 
  // Наполняем массив коэффициентов
  a[1] := 1;b[1] := 0;
  a[2] := 0;b[2] := 1;
  for var i := 3 to maxYear do
  begin
    a[i] := a[i - 1] + a[i - 2];
    b[i] := b[i - 1] + b[i - 2];
  end;
 
  m := a[x];n := b[x];
  // решаем уравнение m*s1 + n*s2 = y
  // m,n - коэффициенты, зависящие от номера года
  // s1,s2 - монет в 1-ый и 2-ой годы
 
  assign(f2, 'output.txt');   // устанавливаем связь меж файловой переменной и методом к файлу
  rewrite(f2);  // творение (перезапись) файла
 
  for var i := 1 to y div m do
  // цикл по s1
  begin
    var j := y - m * i;
    if j mod n = 0 then
      if (j div n) lt; i then
      begin
        writeln('s1=', i, ' s2=', j div n);
        writeln(f2, i, ' ', j div n);  // вывод данных в файл
      end;
  end;
 
  close(f2); // покрываем файл
end.


, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо

Разные вопросы.

Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных

Разные вопросы.

Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей

Математика.

Определить предложения какие они по цели высказывания и по интонации

Русский язык.

"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.

Русский язык.

на одной грядке коротышки посадили 3 ряда морковок по 8 штук

Разные вопросы.

эссе на тему какое образование дается в каждой семье

Қазақ тiлi.

Put the verb in brackets into the Present Indefinite. 1The Volga ,

Английский язык.

Сколько стоит коктейль молочный? Точную цену надо?

Математика.

Составить рассказ Из чего складывался культ монарха помазанника Божьего?

История.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт