我正在尝试计算
1 + 1 * 2 + 1 * 2 * 3 + 1 * 2 * 3 * 4 + ... + 1 * 2 * ... * n
,其中n
是用户输入的。它适用于n
值最多为12。我想计算n=13
,n=14
和n=15
的总和。如何在C89中实现呢?据我所知,我只能在C99或C11中使用unsigned long long int
。
- 输入13,结果2455009817,预期6749977113
- 输入14,结果3733955097,预期93928268313
- 输入15,结果1443297817,预期1401602636313
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned long int n;
unsigned long int P = 1;
int i;
unsigned long int sum = 0;
scanf("%lu", &n);
for(i = 1; i <= n; i++)
{
P *= i;
sum += P;
}
printf("%lu", sum);
return 0;
}