题目描述
多项式描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 ……
先请你求出多项式前n项的和。
输入
第一行输入一个数T代表测试数据个数(T<=1000)。接下来T行每行1个数代表n(0<=n< 2^31)。
输出
对于每个输入样例,输出多项式和的结果(结果精确到小数点后两位)。每行输出一个结果。
题解:这个题给的测试的数据太大,如果暴力找,容易超时,但是你测试发现,在超出某个数之后,它的值趋于稳定。
示例输入
2 1 2
示例输出
1.00 0.50
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
int data;
struct node *next;
} count1;
int main()
{
int T,i;
long long n;
count1 *head,*tail,*p;
head=new count1();
head->next=NULL;
tail=head;
cin>>T;
while(T--)
{
double sum=0.00;
cin>>n;
if(n>=100)
{
sum=0.69;
cout<<sum<<endl;
}
else
{
for(i=1; i<=n; i++)
{
p=new count1();
p->data=i;
p->next=NULL;
tail->next=p;
tail=p;
if(i%2==0)
{
sum-=1.0/p->data;
}
else
sum+=1.0/p->data;
}
cout<<fixed<<setprecision(2)<<sum<<endl;
}
}
return 0;
}
先请你求出多项式前n项的和。
输入
第一行输入一个数T代表测试数据个数(T<=1000)。接下来T行每行1个数代表n(0<=n< 2^31)。
输出
对于每个输入样例,输出多项式和的结果(结果精确到小数点后两位)。每行输出一个结果。
示例输入
2 1 2
示例输出
1.00 0.50