多项式求和(投机取巧法+链表法)
来源:互联网 发布:360拒绝安装软件 编辑:程序博客网 时间:2024/06/05 05:40
多项式求和
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
多项式描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 ……
先请你求出多项式前n项的和。
Input
第一行输入一个数T代表测试数据个数(T<=1000)。接下来T行每行1个数代表n(0<=n< 2^31)。
Output
对于每个输入样例,输出多项式和的结果(结果精确到小数点后两位)。每行输出一个结果。
Example Input
212
Example Output
1.000.50
Hint
Author
中国海洋大学第三届“朗讯杯”编程比赛高级组试题
1、因为保留两位小数,大家可能都没有认真想过,如果输入的基数太大的话,做+-求和运算,对于小数点后两位来说已经没有影响了,可能就是5.1012和5.1013的区别(打比方),所以经过测试,到达150的时候就已经对小数点后两位没有影响了,所以只循环150次,强行减少时间复杂度
2、这道题最容易TLE
3、这道题的本意应该是链表问题,以下只是投机取巧罢了
以下为AC代码
#include <stdio.h>#include <stdlib.h>int main(){ int i , j , n , m , sign = 1 ; double sum ; scanf("%d", &n); for(i =1 ; i<= n ; i++) { scanf("%d", &m); if(m > 150) m = 150;//注意,150!!甚至更小,但是我没有细分,已经够了 sum = 0; sign = 1 ; for(j = 1 ; j <= m ; j++) { sum += sign*(1.0/j) ; sign = -sign ; } printf("%.2lf\n", sum); }}/***************************************************Result: AcceptedTake time: 0msTake Memory: 152KB****************************************************/
链表做法
#include <stdio.h>#include <stdlib.h>#include <math.h>struct node{ double data; struct node*next;};int main(){ double t,i,sum; long long int n; int x; struct node *head,*tail,*p; scanf("%lf",&t); while(t--) { sum=0; scanf("%lld",&n); x=n; head=(struct node*)malloc(sizeof(struct node)); head->next=NULL; tail=head; for(i=1; i<=150; i++) { p=(struct node*)malloc(sizeof(struct node)); p->data=pow(-1,i-1)*(double)(1/i); p->next=NULL; tail->next=p; tail=p; } p=head->next; if(x>1000) { for(i=1; i<=150; i++)//150!! { sum=sum+p->data; p=p->next; } } else for(i=1; i<=x; i++) { sum=sum+p->data; p=p->next; } printf("%.2lf\n",sum); } return 0;}
阅读全文
0 0
- 多项式求和(投机取巧法+链表法)
- sdut oj2504 多项式求和(数组法)
- 多项式求和(Horner)
- 多项式求和(hud2011)
- 多项式求和(2011)
- 多项式求和(用链表)
- 多项式求和(SDUTOJ_2504)
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- java职业规划
- Poj 必刷题
- WinInet使用详解
- OSTickISR()
- C#图片字节流与字符串之间的转换
- 多项式求和(投机取巧法+链表法)
- layui-MainDemo
- 欢迎使用CSDN-markdown编辑器
- JAVA动态代理机制简单应用
- java接口成员变量和方法的特点
- Xshell下载安装
- 从给定数组中找出最大的两个数——二分递归
- FPGA时序收敛经验
- java代理模式