POJ 1517 u Calculate e(我的水题之路——特殊格式,打表)

u Calculate e
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 14675   Accepted: 8874   Special Judge

Description

A simple mathematical formula for e is 
e=Σ0<=i<=n1/i!
where n is allowed to go to infinity. This can actually yield very accurate approximations of e using relatively small values of n.

Input

No input

Output

Output the approximations of e generated by the above formula for the values of n from 0 to 9. The beginning of your output should appear similar to that shown below.

Sample Input

no input

Sample Output

n e
- -----------
0 1
1 2
2 2.5
3 2.666666667
4 2.708333333
...

Source

Greater New York 2000

这道题算是一道纯水题。根据公式据算就可以了,题中要求你输出0到9的e的结果。

题中唯一的难点是0、1、2的末尾没有%.9f会留下的末尾0,而之后的都是小数形式,所以,仅仅将0、1、2时候的值特殊输出,其他的用%.9f处理。

解题方法有两种,第一种是自己计算,然后输出,第二种是打表法。

注意点:
1)计算e时要使用double型,用float型会有精度损失,而且很严重
2)注意特殊输出的情况
3)当结果比较少的时候,可以使用打表法求解。

代码(1AC):
#include <cstdio>
#include <cstdlib>

int main(void){
    int i, power;
    double e;

    printf("n e\n- -----------\n0 1\n1 2\n2 2.5\n");
    for (i = power = e = 1; i <=9; i++){
        power *= i;
        e += 1.0 / power;
        if (i >= 3){
            printf("%d %.9f\n", i, e);
        }
    }
    return 0;
}

代码(1AC):
#include<stdio.h>
int main()
{
    printf("n e\n
            - -----------\n
            0 1\n
            1 2\n
            2 2.5\n
            3 2.666666667\n
            4 2.708333333\n
            5 2.716666667\n
            6 2.718055556\n
            7 2.718253968\n
            8 2.718278770\n
            9 2.718281526\n");
    return 0;
}


你可能感兴趣的:(float,Go,n2,output)