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\n");
printf("- -----------\n");
printf("0 1\n");
for(double k=1;k<=9;k+=1){
e+=sum(k);
printf("%.0f %.10g\n",k,e);
}
return 0;
}
AC代码:
#include<stdio.h>
int main(){
int n;
printf("n e\n");
printf("- -----------\n");
printf("0 1\n");
printf("1 2\n");
printf("2 2.5\n");
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",n,sum);
}
return 0;
}