Вот код, объяснение через пару минут напишу.
Также выкладываю решение для всех чисел от 0 до 99.
Код:
program Project1;
const maxarray = 200;
var x,y,p:byte;
a: array [1..maxarray] of byte;
i:integer;
isfind:integer;
begin
assign(input, 'NUMGAME.IN');
reset(input);
assign(output, 'NUMGAME.OUT');
rewrite(output);
// read
Readln(x);
y := x mod 10;
x := x div 10;
// solve
p := 0;
a[1] := y;
a[2] := x;
isfind := 0;
for i:=3 to maxarray do
begin
a[i] := a[i-2]*2 + p;
p := a[i] div 10;
a[i] := a[i] mod 10;
if ((a[i]=x) and (a[i-1]=y) and (p=0)) then
begin
isfind := i-2;
break;
end;
end;
// output
if (isfind > 1) then
begin
for i:=isfind downto 1 do
Write(a[i]);
Writeln('');
end
else
begin
Writeln('NO SOLUTION');
end;
close(input);
close(output);
end.