Я пытаюсь вычислить 1 + 1 * 2 + 1 * 2 * 3 + 1 * 2 * 3 * 4 + ... + 1 * 2 * ... * n
, где n
- пользовательский ввод.
Он работает для значений n
до 12. Я хочу рассчитать сумму для n = 13
, n = 14
и n = 15
. Как это сделать на C89? Как я знаю, я могу использовать unsigned long long int
только на C99 или C11.
- Вход 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;
}