1088: 求 1 + 1/2! +...+ 1/n!
Time Limit: 1 SecMemory Limit: 128 MB
Submit: 3196Solved: 1604
Description
输入一个正整数 repeat (0
输入 1 个正整数n,计算 s 的前n 项的和(保留 4 位小数)。
s = 1 + 1/2! +...+ 1/n!
Input
见sample
Output
见sample
Sample Input
1
2
Sample Output
1.5000
(水题)
//1088
#include<stdio.h>
int main(){
int m,rep;
double s,prom,monther;
scanf("%d",&rep);
while(rep--)
{
scanf("%d",&m);
s=0;
monther=1;
for(int i=1;i<=m;i++)
{
monther*=i;
prom=1.0/monther;
s+=prom;
//printf("%.4f ",monther);
// printf("%.4f\n",prom);
}
printf("%.4f\n",s);
}
return 0;
}
注意:
1.解题思路:
1、由题得,解此题无符号的变化,但是要计算阶乘。
2、因为看题中所给的式子,1,2,3,所以如果用循环,要每加一次,每做一次阶乘,并且s每加一次1.0/fact。
3、阶乘有一个性质:n!=(n-1)!*n; 利用循环的性质,当n+1次循环时,可以利用之前被赋值的fact继续进行计算。而k++形成的新的k,可以作为公式中的n,以此来进行计算。
作者:xx1257gd来源:CSDN原文:https://blog.csdn.net/xx1257gd/article/details/81058503版权声明:本文为博主原创文章,转载请附上博文链接!