#include <iostream>
unsigned factorial(int n)
{
if (n == 1) return 1;
return n * factorial(n-1);
}
unsigned combinationsWithRepetition(int n, int k)
{
return factorial(n + k - 1) / (factorial(k) * factorial(n - 1));
}
unsigned yourProblem(unsigned numberOfNumbers, unsigned result)
{
return combinationsWithRepetition(numberOfNumbers, result - numberOfNumbers);
}
int main()
{
std::cout << yourProblem(4, 5) << std::endl;
std::cout << yourProblem(4, 6) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdW5zaWduZWQgZmFjdG9yaWFsKGludCBuKQp7CiAgICBpZiAobiA9PSAxKSByZXR1cm4gMTsKICAgIHJldHVybiBuICogZmFjdG9yaWFsKG4tMSk7Cn0KCnVuc2lnbmVkIGNvbWJpbmF0aW9uc1dpdGhSZXBldGl0aW9uKGludCBuLCBpbnQgaykKewogICAgcmV0dXJuIGZhY3RvcmlhbChuICsgayAtIDEpIC8gKGZhY3RvcmlhbChrKSAqIGZhY3RvcmlhbChuIC0gMSkpOwp9Cgp1bnNpZ25lZCB5b3VyUHJvYmxlbSh1bnNpZ25lZCBudW1iZXJPZk51bWJlcnMsIHVuc2lnbmVkIHJlc3VsdCkKewogICAgcmV0dXJuIGNvbWJpbmF0aW9uc1dpdGhSZXBldGl0aW9uKG51bWJlck9mTnVtYmVycywgcmVzdWx0IC0gbnVtYmVyT2ZOdW1iZXJzKTsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgeW91clByb2JsZW0oNCwgNSkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IHlvdXJQcm9ibGVtKDQsIDYpIDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiAwOwp9