Показать сообщение отдельно
Старый 08.02.2006, 20:01     # 6
Izzyy
Junior Member
 
Аватар для Izzyy
 
Регистрация: 20.06.2003
Адрес: Israel
Сообщения: 106

Izzyy Путь к славе только начался
У меня была попытка сделать это с помощью комбинаторики т.е. вычисляем кол-во способов разложить на сумму потом используя это делать разложение на множители т.е. тупо проверять делиться ли число если да то на сколько слагаемых можно разложить делители и так далее в цикле, но проблема возникает ещё на уровне подсчёта слагаемых. Я пытался реализовать рекурсивный алгоритм, но что-то в нем не так, или я просто не догоняю.

Код:
unsigned long sumNum(unsigned int n)
{
 int i;
 unsigned long count=1;

 if (n==2) return 1;

 for (i=1; i<n; ++i)
  count+=sumNum(n-i)+sumNum(i);

 return count;
}
А может сам подход ошибочний.
Буду рад любым идеям.
Izzyy вне форума