Как исправить ошибку с типами данных?
необходимо на C++ реализовать данный числовой ряд: 
При выполнении программы возвращает всё время 0. Даже если поменять тело цикла на просто result += 1 к примеру, то программа всё равно возвращает 0. Как чинить? Подозреваю, что дело в делении числителя на знаменатель, возможно ошибка с типами данных.
#include<iostream>
#include<locale.h>
#include<cmath>
using namespace std;
int factorial(int f) {
int fact;
if (f == 0 || f == 1)
return 1;
for (fact = 1; f > 1; f--)
fact *= f;
return fact;
}
int solution(int x, int k) {
int result = 0;
for (int n = 1; n < k; n++) {
int numerator = pow(n, 3) * pow((x + 4), 2 * n + 1);
int denominator = factorial((n + 1));
result += numerator / denominator;
}
return result;
}
int main()
{
setlocale(LC_ALL, "Russian");
int x, n;
cout << "Введите x и n: ";
cin >> x, n;
cout << solution(x, n) << endl;
return 0;
}