获取算术异常错误

Getting Artihmetic Exception Error

这个程序是我写的。但我收到算术异常错误。 程序:

#include<bits/stdc++.h>
using namespace std;
int fact(int n)
{
    int facte = 1;
    for (int i = 1; i <= n; i++)
        facte *= i;
    return facte;
}
int main()
{
    int n, k;
    cin >> n >> k;
    int sum1 = 0;
    int res = 0;
    int temp = k;
    int term1, term2, term3;
    while ((n - temp) > 1)
    {
        term1 = fact(n);
        term2 = fact(n - temp);
        term3 = fact(temp);
        res = int((term1 / (term2 * term3)));
        sum1 += res;
        temp--;
    }

    cout << sum1 * fact(n - k - 1) + 1;
}

输入:

n=4 和 k=2
错误:
 GDB 跟踪:
    从解决方案中读取符号...完成。
    [新 LWP 18123]
    核心是由“解决方案”生成的。
    程序以信号 SIGFPE 终止,算术异常。
    #0 main () 在 solution.cc:29
    29 res=int((term1/(term2*term3)));
    #0 main () 在 solution.cc:29

两个阶乘数相乘会导致整数溢出。

替换

 res = int((term1 / (term2 * term3)));

  res = (term1 / term2) / term3;

// 添加括号只是为了确定 也改变

 temp--;

temp++;