DHU OJ | 基本練習-84 求級數的和

84 求級數的和

作者: Turbo時間限制: 1S章節: 循環

問題描述 :

計算以下級數的和:

image.png

直到最後一項的絕對值小於10-6(該項不包括在結果中)。

輸入說明 :

輸入一個實數,代表x。

輸出說明 :

輸出結果,保留六位小數。整個輸出無多餘空格。

輸入範例 :

2.5

輸出範例 :

1.917914

筆記

若要使若干數相乘的結果爲實屬,且保證精度儘可能不錯,應將所有參與的乘數變量定義爲實屬。

代碼

#include<stdio.h> 
#include<math.h>

const double eps = 1e-8;
#define MoreEqu(a,b) ((a)-(b)>(-eps))

double fac[101];

void init_fac(){
	fac[0] = 0;
	fac[1] = 1;
	
	int i;
	for(i=2;i<101;i++)
		fac[i] = fac[i-1] * i;
}

int main(){
	double x;
	scanf("%lf",&x);
	
	init_fac();
	
	int n = 1;
	double sig = 1;
	double sum = 1;
	double xx = x;

	while(MoreEqu(xx/fac[n],1e-6)){
		sum += sig * xx/ fac[n];
		xx *= x;
		n++;
		sig *= -1;
		
	}
	
	printf("%f\n",sum);
	
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章