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;
}