搞不会循环的尴尬,结果不对?

这是题目

img


这是我的代码

img


这是结果

img


和答案不一样,但是找不到有什么公式错误呢

供参考:

#include <stdio.h>
int main()
{
    __int64 n,sum,i,a;
    scanf("%I64d", &n);
    for (i = 1,a = 1,sum = 0;i <= n; i++){
        a *= i;
        sum += a;
    }
    printf("%I64d",sum);
    return 0;
}

第一行int 改成long long ,int类型太小了,20的阶乘会溢出