http://poj.org/problem?id=1517
依旧是水题一道,但是写了三遍才过。最后发现是double类型写成了float类型,精度到六位就行,导致最后写%.9lf的时候数值有问题。一看输出是点后面比六位多就没多想。错的太瞎。
#include<cstdio>
using namespace std;
int a[10];
void get(){
a[0]=1;
for(int i=1;i<10;i++)//{
a[i]=a[i-1]*i;
//printf("%d\n",a[i]);}
}
int main(){
double b=0.0;
get();
printf("n e\n");
printf("- -----------\n");
for(int i=0;i<10;i++){
b+=1.0/a[i];
if(i==0||i==1) printf("%d %.lf\n",i,b);
else if(i==2) printf("%d %.1lf\n",i,b);
else printf("%d %.9lf\n",i,b);
}
}