Пират положил в сундук некоторое количество золотых монет. на второй год он вынул из сундука сколько-то монет. начиная с третьего года, он добавлял столько монет ,сколько было в сундуке два года назад. требуется написать программу, которая определит, сколько монет было в сундуке в первый и во второй год , в сундуке будет 5,2,7,9,,16,25 монет. формат входного файла: входной файл input.txt содержит числа х (3< =x< =20) и y(1< =y< =32767), записанные через пробел . формат выходного файла: в выходной текстовый файл output.txt записываются через пробел количество монет в первый и второй года. гарантируется, что решение всегда есть. если решений несколько, то вывести любое.
299
360
Ответы на вопрос:
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.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
anna1619122.02.2021 02:06
-
lyda77706.04.2021 00:50
-
alexandra6734678316.03.2020 21:27
-
Mellisa1111111116.09.2021 23:00
-
tolia2446505.03.2022 04:15
-
darina120921.03.2022 07:37
-
cot57928.11.2020 07:52
-
anaStasyaplus18.03.2021 07:28
-
shestukhina197324.08.2022 17:20
-
roxolanavarLana11.09.2020 20:07
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.