输入N为20时
预期输出
2561327494111820313
实际输出
2561327494111820288
#include
int main()
{ int N,i;
double j=1,sum=0;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
j=i*j;
sum=sum+j;
}
printf("%.lf",sum);//输出从1!+2!+3!+...+N!的和
return 0;
}
#include <iostream>
using namespace std;
int main(){
int n, sum = 0;
int x = 1;
cin >> n;
for(int i=1; i<=n; i++){
x *= i;
sum += x;
}
cout << sum << endl;
return 0;
}
回答一下我自己
不一样是因为精度问题,定义数据用longlong