HDU 1012 题解

HDU 1012

【读题】
题目


Main Idea:

    按照题目要求打出n在0-9时e的情况。

Problem Solving Idea:

    模拟。

Summary:

    1.%g可以去掉浮点数double的后缀0。
    2.题目前两个小数点没有后那么多位的情况,可直接按照Sameple output打印。
    3.这个题目我最开始是以为打印出的e要去掉后缀0,结果WA了。这时候就要看枚举题意的能力了(误),也可能是只有前两种情况去掉后缀0。

WA代码:

#include<bits/stdc++.h>
using namespace std;
double sum(double i){
    double su=0,fa=1.0;
    for(double k=1;k<=i;k+=1){
        fa*=k;
    }
    su=1.0/fa;
    return su;
}
int main()
{
    double n,e=1,i;
    printf("n e
");
    printf("- -----------
");
    printf("0 1
");
    for(double k=1;k<=9;k+=1){
        e+=sum(k);
        printf("%.0f %.10g
",k,e);
    }
    return 0;
}

AC代码:

#include<stdio.h>
int main(){
int n;
printf("n e
");
printf("- -----------
");
printf("0 1
");
printf("1 2
");
printf("2 2.5
");
for(n=3;n<=9;n++){
    double sum=2.5;
    int i;
    for(i=3;i<=n;i++){
            int j,t=1;
        for(j=1;j<=i;j++){
            t=t*j;
        }
        sum=sum+1.0/t;
    }
    printf("%d %.9lf
",n,sum);
}
 
return 0;
}
原文地址:https://www.cnblogs.com/Fhr2001/p/11985686.html