1. 程式人生 > >HDU1012 u Calculate e

HDU1012 u Calculate e

在這裡插入圖片描述

在這裡插入圖片描述

AC程式碼 思路 主要是注意輸出的格式問題, 以及求e時連續的九項輸出,可以邊累加邊輸出,不必要每次計算載輸出。

#include <iostream>
#include <cstdio>
using namespace std;

int factorial(int n);

int main()
{
    cout<< "n " << "e" <<endl;
    cout<< "- " << "-----------"<<endl;
    double e = 0.0;		//邊累加邊輸出
    for
(int i=0; i<=9; i++) { e += 1.0/factorial(i); if(i < 3) { printf("%d %g\n", i, e); } else { printf("%d %.9f\n", i, e); } } return 0; } //計算階乘 int factorial(int n) { int result = 1; for(int i=1; i<=n; i++) { result *= i; } return result;
}

執行結果

剛開始時用了兩個函式,沒有考慮到double的截斷問題,開始的幾個數符合,後面的不符合。。。。。(見運算結果)。。。

#include <iostream>
#include <iomanip>
using namespace std;

int factorial(int n);
double GetE(int n);

int main()
{
    cout<< "n " << "e" <<endl;
    cout<< "- " << "-----------"<<endl;
    for
(int i=0; i<=9; i++) { if(i < 3) { cout<< i << " " << GetE(i)<< endl; } else { cout<< i << " " << setprecision(9) << GetE(i)<<endl; } } return 0; } //計算階乘 int factorial(int n) { int result = 1; for(int i=1; i<=n; i++) { result *= i; } return result; } //計算不同取值的e double GetE(int n) //n:0-9 { double resultE = 0.0; for(int i=0; i<=n; i++) { resultE += (1.0/factorial(i)); } return resultE; }

執行結果