2 1 2
1.00 0.50
由于数据过大,如果m个数一个个用直接循环的方法一定TLE,看了一下网上的做法,就在我原来的程序中加了一个n>270时,直接输出0.69就过了
#include<stdio.h> #include<string.h> int main() { int T,n,i; scanf("%d",&T); while(T--) { double sum1=0; double sum2=0; double sum; scanf("%d",&n); if(n>=270) { printf("0.69\n"); } else if(n%2==1) { for(i=1;i<=n;i+=2) { sum1=sum1+(1/(i*1.0)); } for(i=2;i<=n-1;i+=2) { sum2=sum2+(1/(i*1.0)); } sum=sum1-sum2; printf("%.2lf\n",sum); } else if(n%2==0) { for(i=1;i<=n-1;i+=2) { sum1=sum1+(1/(i*1.0)); } for(i=2;i<=n;i+=2) { sum2=sum2+(1/(i*1.0)); } sum=sum1-sum2; printf("%.2lf\n",sum); } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/sh_tomorrow/article/details/47339805