计算整数阶乘的倒数之和
wust oj
Description
这天老师还是给小豪出了一道题目:计算
Input
每行输入包括一个正整数n(1<=n<=65535)。
Output
每行输出一个计算结果,保留六位小数。
Sample Input
1
2
Sample Output
1.000000
1.500000
错误代码
#include<stdio.h>
int main ()
{
double sum,a;
int i,n;
while(scanf("%d",&n)!=EOF)
{
sum=0;
a=1;
for(i=1;i<=n;i++)
{
a=a*i;
sum=sum+1/a;
}
printf("%.6lf\n",sum);
}
return 0;
}
题目要求输出小数点后六位,虽然输出后六位,但代码超时
正确代码
#include<stdio.h>
int main ( )
{
double sum,a;
int i,n;
while(scanf("%d",&n)!=EOF)
{
sum=0;
a=1;
for(i=1;i<=n;i++)
{
a= a*i;
sum = sum + 1/a;
if((1.0/a)<1e-7)
{
break;
}
}
printf("%.6lf\n",sum);
}
return 0;
}
因为题目说保留小数点6位,所以有了循环后的那个控制条件,10的-7次后不循环了