多项式求和
来源:互联网 发布:怎样从淘宝上买东西 编辑:程序博客网 时间:2024/06/07 05:43
Think:
刚刚看到此题的时候 感觉n好大 所以直接暴力 从1 遍历到 n 的话绝对是不可能的, 绝对TLE!!!!
后来发现 题目写了 , 小数点后两位, 所以想到遍历到1000就可以了。
所以 有两种方法 来解答
一:直接一个double的数组; AC
二:链表; AC
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
2
1
2
Example Output
1.00
0.50
数组 Accepted 代码
#include<bits/stdc++.h>using namespace std;double a[1050];int main(){ int T, n, i; for (i = 1;i <= 1000;i ++) { a[i] = pow(-1, i - 1) * (double)(1.0 / i); } while(cin >> T) { while(T --) { cin >> n; double sum = 0; if (n >= 1000) { for (i = 1;i <= 1000;i ++) { sum+=a[i]; } } else { for (i = 1;i <= n;i ++) { sum+=a[i]; } } printf("%.2lf\n", sum); } }}
链表 Accepted 代码
#include<bits/stdc++.h>using namespace std;struct node{ double data; struct node *next;};int main(){ int T, n; while(cin >> T) { while(T --) { cin >> n; int i; double sum = 0; struct node *head, *tail, *p; head = new node; tail = head; for (i = 1; i <= 1000; i ++) { p = new node; p -> data = pow(-1, i - 1) * (double)(1.0 / i); tail -> next = p; tail = p; } p = head -> next; if (n >= 1000) { for (i = 1; i <= 1000; i ++) { sum = sum + p -> data; p = p -> next; } } else { for (i = 1; i <= n; i ++) { sum = sum + p -> data; p = p -> next; } } printf("%.2lf\n", sum); } }}
阅读全文
0 0
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- postfix邮件服务:限制用户发送、接收;出站地址伪装、入站地址转换
- java实现遍历树形菜单方法——TreeAction实现
- POJ 1337 A Lazy Worker 笔记
- 高级网络配置之网桥与ipv6
- 数据库——(6)
- 多项式求和
- phantomjs实例
- 南阳OJ 擅长排列的小明
- java实现遍历树形菜单方法——OpenSessionView实现
- Ext Js入门第5篇-DOM元素常用操作
- 【Redis缓存机制】2.Redis安装和简单使用
- Hibernate中Formula的xml配置
- 设计模式_观察者模式
- Inline Vs Internal Vs External CSS(译)