1. 程式人生 > >1133: 【C語言訓練】求1+2!+3!+...+N!的和

1133: 【C語言訓練】求1+2!+3!+...+N!的和

題目描述

求1+2!+3!+...+N!的和

輸入
正整數N(N〈=20)

輸出
1+2!+3!+...+N!的和 (結果為整數形式)

樣例輸入
3
樣例輸出
9
提示

這道題目,看提交和通過率1/5吧,所以發出來了。

我覺得他們是不知道怎麼儲存20的階乘,因為這個資料是很大的,暫且不說還要累加。

由於OJ系統不同,要用lld%,但是我自身編譯器使用lld%,是有點問題的,但是在OJ上通過了。

<span style="font-size:18px;">

#include<stdio.h>
//遞迴求階乘
unsigned long long facto(int n)
{
	if (n == 1)
		return 1;
	else
		return n*facto(n - 1);
}

int main()
{
	unsigned long long n;
	/*
	unsigned long long的最大值:
	1844674407370955161
	__int64的最大值:9223372036854775807
	可以儲存
	*/
	unsigned long long sum = 0;
	scanf("%lld", &n);
	for (int i = 1; i <= n; i ++)
		sum += facto(i);
	printf("%lld\n", sum);
	return 0;
}

</span>