Могу рассказать идеи решений, например у первых 2 заданий wink.gif

1. Любое натуральное число можно представить как сумму факториалов. Значит задача не так сложна. Для решения, я бы составил массив факториалов (благо всего 12 значений), либо просто написал функцию fac(n), которая возвращает факториал числа. Потом просто двойной цикл (примерно так)
Код
for i:=12 downto 1 do
  while (sum + fac(i))<=N do
  begin  
    sum:=sum + fac(i);
    writeln(i);
  end;


2. Еще проще.
Код
for i:=1 to 1000 do
  if summ(i) = N then
    count:=count + 1;

Где функция summ возвращает сумму цифр числа
Можно написать например так
Код
function summ(n:integer):integer;
var
  tn, t, sm:integer;  
begin
  tn := n;
  t := 0;
  while tn>0 do
  begin  
    t := t + tn mod 10;
    tn := tn div 10;
  end;
  summ:=t;  
end;