PAT1009Product of Polynomials (25)
2016-05-11 16:35
344 查看
This time, you are supposed to find A*B where A and B are two polynomials.
Input Specification:
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 Specification:
For each test case you should output the product 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 up to 1 decimal place.
Sample Input2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output3 3 3.6 2 6.0 1 1.6
解法二
Input Specification:
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 Specification:
For each test case you should output the product 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 up to 1 decimal place.
Sample Input2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output3 3 3.6 2 6.0 1 1.6
struct NUM { int exp; int coe; }; void PAT1009Apro(){ int n = 0,i=0,len1=0,len2=0,sum=0; scanf("%d", n); len1 = n; NUM *num1 = new NUM ; while (n--){ scanf("%d", num1[i].exp); scanf("%d", num1[i].coe); ++i; } scanf("%d", n); len2 = n; NUM *num2 = new NUM ; while (n--){ scanf("%d", num2[i].exp); scanf("%d", num2[i].coe); ++i; } int len3 = len1*len2,k=0; NUM*num3 = new NUM[len3]; for (i = 0; i < len1; ++i){ for (int j = 0; j < len2; ++j){ num3[k].coe = num1[i].coe*num2[j].coe; num3[k].exp = num1[i].exp*num1[j].exp; ++k; } } for (i = 0; i <= k; ++i){ if (num3[k].coe)++sum; } printf("%d", sum); for (i = 0; i <= k; ++i){ if (num3[k].coe)printf("%d %.1lf", num3[i].exp, num3[i].coe); } }
解法二
int n, x, cnt; int a[1000] = { 0 }, b[1000] = { 0 }, c[2008] = { 0 }; scanf("%d", &n); while (n--){ scanf("%d", &x);//指数 scanf("%lf", &a[x]);//系数 } scanf("%d", &n); while (n--){ scanf("%d", &x); scanf("%lf", &b[x]); } for (int i = 0; i < 1001; ++i){ for (int j = 0; j < 1001; ++j) c[i + j] = a[i] * b[j];//系数相乘,指数相加 } for (int i = 0; i < 2001; i++) if (c[i] != 0) cnt++; printf("%d", cnt); for (int i = 2000; i >= 0; i--) if (c[i] != 0) printf(" %d %.1lf", i, c[i]);
相关文章推荐
- javascript小技巧
- MySQL MHA
- linux常规命令
- CentOS 下搭建FTP服务器
- 汉字转拼音简称
- hdu 1561 The more, The Better 树形背包
- Android studio编译问题
- ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用
- 日常累积
- hdu1729(博弈)
- Java集合set的并、交、差操作
- 关于编译器的优化和调试信息
- JavaScript(ECMAScript) with 语句
- 树——对称的二叉树
- Android使用百度地图---添加覆盖物及定位
- 攻击与防范
- To The Moon 玩后感
- poj 1125 Stockbroker Grapevine (dij优化 0ms)
- 在netbeans下编译leveldb源码
- UVA531字符串版最长公共子序列,并输出