题目详情 (pintia.cn)
code 1(未完全通过)#includeint main(){ unsigned long long i,a=1,b=1; int c,cnt=0; double sum=0,n; scanf("%lf",&n); for(i=1;1.0*a/b>=n;i++){ a*=i; b*=(2*i+1); sum+=1.0*a/b; } printf("%.6fn",2.0*(1+sum)); return 0; }
code 1不能通过的原因在于分子,分母单独迭代,几次之后就过大,超出整形变量的范围。哪怕加了约分,也不行。
code 2(检验通过)#includeint cc(int a,int b); int main(){ int i; double sum,f,n; sum=f=1.0; scanf("%lf",&n); for(i=1;f>=n;i++){ f=f*i/(2*i+1); sum+=f; } printf("%.6fn",2.0*sum); return 0; }
code2 不单独求分子分母,每一项在前一项的基础上求出,没有超出范围的问题。



