PAT(A)1002
2015-09-21 20:48
260 查看
1002. A+B for Polynomials (25)
时间限制400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
This time, you are supposed to find A+B where A and B are two polynomials.
Input
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 ... NK aNK, where
K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, ..., K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < ... < N2 < N1 <=1000.
Output
For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.
Sample Input
2 1 2.4 0 3.2 2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2
1002.多项式的A+B
这次,你需要计算出A和B两个多项式的和
输入:
每个输入文件包括一个测试用例。每个测试用例有两行,每一行包括一个多项式的信
息: K
N1 aN1 N2 aN2 ... NK aNK,K不为0, Ni
and aNi (i=1, 2, ..., K)分别为多项式的
指数和系数。且 给出的数字满足1
<= K <= 10,0 <= NK < ... < N2 < N1
<=1000
输出:
对于每一个测试用例,都应该在一行中输出A和B的和,且输出格式与输入格式与输入格式相同。注意末尾不应该有多余的空格,精确到小数点后一位。
这个并没有过。。不知道为啥。。先放着吧。。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MAX = 1001; struct node{ int n; double a; }; node NA[MAX]; node NB[MAX]; int main() { int K1, K2; scanf("%d", &K1); int exp = 0; for(int i=0; i<K1; i++){ scanf("%d", &exp); NA[exp].n = exp; scanf("%lf", &NA[exp].a); } scanf("%d", &K2); for(int i=0; i<K2; i++){ scanf("%d", &exp); NB[exp].n = exp; scanf("%lf", &NB[exp].a); } for(int i=0; i<1001; i++){ if(NA[i].a != 0){ NB[i].a += NA[i].a; } } int cont = 0; int MIN_id = 1000000; for(int i=0; i<1001; i++){ if(NB[i].a != 0){ if(NB[i].n < MIN_id){ MIN_id = NB[i].n; } if(NB[i].a < 0){ if(NB[i].a > -0.05) cont++; } else if(NB[i].a > 0){ if(NB[i].a > 0.05) cont++; } } } if(cont == 0){ printf("0 0 0.0\n"); } else{ printf("%d ", cont); for(int i=1001; i>=0; i--){ if(NB[i].a != 0){ if(NB[i].a <=0.05 || NB[i].a <= -0.05) continue; else{ printf("%d %.1f", NB[i].n, NB[i].a); if(i == MIN_id){ printf("\n"); break; } else printf(" "); } } } } return 0; }
相关文章推荐
- C#软件开发实例.私人订制自己的屏幕截图工具(一)功能概览
- 黑马程序员--接口
- 【IOS 开发学习总结-OC-13】★★objective-c面向对象之——KVC(键值编码)
- 【Python之旅】第二篇(九):迭代器
- ZOJ1414题的解法
- 欢迎大家来我的博客园踩踩~~
- 现实与理想的辩证关系
- AOJ 0005 GCD and LCM (最大公约数_裸题)
- ProgressDialog对话框
- 45 Jump Game II
- 黑马程序员--多态
- *并查集的题*
- Java基础知识强化50:运行javac 报告javac不是内部或外部命令(已解决)
- [置顶] Jsp乱码问题的基本解决方案,转码 + 过滤器 Filter
- 【C++】派生类构造函数
- 无法打开登录所请求的数据库database登录失败用户登录失败
- JQuery Datatables Dom 和 Language 参数详细说明
- hdu 5463 Clarke and minecraft
- Windows平台搭建Kafka源代码开发环境(Eclipse版本)
- 使用ipmi进行服务器管理