Как исправить ошибку с типами данных?

необходимо на 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;
}

Ответы (0 шт):