题目链接:http://pat.zju.edu.cn/contests/ds/3-04

设计函数分别求两个一元多项式的乘积与和。

输入格式说明:

输入分2行。每行分别先给出多项式非零项的个数。再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式说明:

输出分2行。分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。

数字间以空格分隔,但结尾不能有多余空格。

例子输入与输出:

序号 输入 输出
1
4 3 4 -5 2  6 1  -2 0
3 5 20 -7 4 3 1
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0
2
2 1 2 1 0
2 1 2 -1 0
1 4 -1 0
2 2
3
2 -1000 1000 1000 0
2 1000 1000 -1000 0
-1000000 2000 2000000 1000 -1000000 0
0 0
4
0
1 999 1000
0 0
999 1000

代码例如以下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn = 5217;
typedef struct
{
int x, y;
int m, s;
} node;
node num1[maxn], num2[maxn];
node ans_mul[maxn], ans_sum[maxn];
int max1, max2, maxx; void mult()
{
for(int i = 0; i <= max1; i++)
{
for(int j = 0; j <= max2; j++)
{
ans_mul[i+j].m += num1[i].x*num2[j].x;
}
}
} void sum()
{
for(int i = 0; i <= maxx; i++)
{
ans_sum[i].s += num1[i].x + num2[i].x;
}
}
int main()
{
int n, m;
scanf("%d",&n);
int t1, t2;
max1 = max2 = 0;
for(int i = 0; i < n; i++)
{
scanf("%d %d",&t1,&t2);
if(t2 > max1)
max1 = t2;
num1[t2].x = t1;
}
scanf("%d",&m);
for(int i = 0; i < m; i++)
{
scanf("%d%d",&t1,&t2);
if(t2 > max2)
max2 = t2;
num2[t2].x = t1;
}
int mul_max = max1+max2;
maxx = max(max1, max2);
mult();
sum();
int flag = 0;
for(int i = mul_max; i >= 0; i--)
{
if(!ans_mul[i].m)
{
continue;
}
if(!flag)
{
printf("%d %d",ans_mul[i].m,i);
flag = 1;
}
else
{
printf(" %d %d",ans_mul[i].m,i);
}
}
if(!flag)
{
printf("0 0");
}
printf("\n");
flag = 0;
for(int i = maxx; i >= 0; i--)
{
if(!ans_sum[i].s)
{
continue;
}
if(!flag)
{
printf("%d %d",ans_sum[i].s,i);
flag = 1;
}
else
{
printf(" %d %d",ans_sum[i].s,i);
}
}
if(!flag)
{
printf("0 0");
}
printf("\n");
return 0;
}

最新文章

  1. Marquee 滚动参数
  2. CocoaLumberjack
  3. mysql 时间戳 按周、日、月 统计方法 附 date格式
  4. mysql中You can&#39;t specify target table for update in FROM clause错误
  5. js对象转到字符串
  6. 【Xamarin开发 Android 系列 5】 Xamarin 的破解
  7. 关于js封装框架类库之属性操作
  8. 【codevs1001】[bzoj1050]舒适的路线
  9. 在vue中优雅地实现简单页面逆传值
  10. python中的函数对象与闭包函数
  11. linux下的清屏命令
  12. cocos2dx模拟器修改窗口大小
  13. mui弹出菜单
  14. C#序列化与反序列化以及深拷贝浅拷贝
  15. 【AUC】二分类模型的评价指标ROC Curve
  16. Transport failed: java.io.EOFException
  17. 值得一做》关于一道暴搜BZOJ1024(EASY+)
  18. 快速搭建maven私服 Artifactory on Docker
  19. ubuntu下ssh服务相关操作
  20. Android开发者必知的5个开源库

热门文章

  1. 基于visual Studio2013解决C语言竞赛题之0602最大值函数
  2. 一步一步重写 CodeIgniter 框架 (8) —— 视图的嵌套输出与返回
  3. 在Eclipse/MyEclipse中安装spket插件
  4. 文件操作中的FLAG(O_RDONLY,O_WRONLY )的值
  5. BZOJ 1014: [JSOI2008]火星人prefix( splay + hash )
  6. java io学习记录(路径分隔符)
  7. win7(64位)php5.5-Apache2.4-环境安装
  8. Git 文件状态的转换
  9. Qt核心剖析: moc
  10. SSH框架总结(框架分析+环境搭建+实例源码下载)(转)