Вопрос задан 30.04.2019 в 12:22. Предмет Информатика. Спрашивает Аноятбеков Руслан.

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

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

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Воскобойников Дмитрий.
1. Вопрос задан коряво. Задача эта называется сундук Билли Бонса, ряд
5,2,7,9,16,25 - это пример последовательности числа монет в сундуке, если в первый год монет пять, во второй - две.
2. Вот программка на АБС-Паскале, не оптимальная по ряду моментов, но рабочая. Из особенностей - выводит решения только если если во второй год монет становится меньше, чем в первый. Существуют решения при нулевом количестве взятых во второй год монет и при отрицательном. Если такие решения нужны - то условие в  "if (j div n) < 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 - монет в первый и второй годы
 
  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) < i then
      begin
        writeln('s1=', i, ' s2=', j div n);
        writeln(f2, i, ' ', j div n);  // вывод данных в файл
      end;
  end;
 
  close(f2); // закрываем файл
end.


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Программа, которая определит, сколько монет было в сундуке в первый и второй год, может быть реализована следующим образом:

```python def calculate_coins(x, y): coins = [5, 2] # начальное количество монет в сундуке for i in range(2, x): coins.append(coins[i-1] + coins[i-2]) # добавляем в сундук столько монет, сколько было в сундуке два года назад return coins[x-1], coins[y-1] # возвращаем количество монет в первый и второй год

# считываем входные данные из файла INPUT.TXT with open('INPUT.TXT', 'r') as file: x, y = map(int, file.readline().split())

# вычисляем количество монет в первый и второй год coins_first_year, coins_second_year = calculate_coins(x, y)

# записываем результаты в файл OUTPUT.TXT with open('OUTPUT.TXT', 'w') as file: file.write(f'{coins_first_year} {coins_second_year}') ```

Программа считывает входные данные из файла `INPUT.TXT`, где первое число `X` обозначает год, в котором нужно определить количество монет в сундуке, а второе число `Y` обозначает год, в котором нужно определить количество монет в сундуке. Затем программа вычисляет количество монет в первый и второй год с помощью функции `calculate_coins`. Результаты записываются в файл `OUTPUT.TXT`.

Примечание: В данном случае, программа использует последовательность чисел, где каждое следующее число равно сумме двух предыдущих чисел. Начальное количество монет в сундуке составляет 5 и 2.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос