获取算术异常错误
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++;
这个程序是我写的。但我收到算术异常错误。 程序:
#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++;