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.