Есть ответ 👍

Пират положил в сундук некоторое количество золотых монет. на второй год он вынул из сундука сколько-то монет. начиная с третьего года, он добавлял столько монет ,сколько было в сундуке два года назад. требуется написать программу, которая определит, сколько монет было в сундуке в первый и во второй год , в сундуке будет 5,2,7,9,,16,25 монет. формат входного файла: входной файл input.txt содержит числа х (3< =x< =20) и y(1< =y< =32767), записанные через пробел . формат выходного файла: в выходной текстовый файл output.txt записываются через пробел количество монет в первый и второй года. гарантируется, что решение всегда есть. если решений несколько, то вывести любое.

299
360
Посмотреть ответы 2

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


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.
egmoisee
4,7(49 оценок)

1) озу (оперативная память) 2) дискета

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS