HDU1012 u Calculate e
阿新 • • 發佈:2018-12-13
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;
}