3-04. 一元多项式的乘法与加法运算(20)(ZJU_PAT 结构体)
2024-10-19 14:42:17
题目链接:http://pat.zju.edu.cn/contests/ds/3-04
设计函数分别求两个一元多项式的乘积与和。
输入格式说明:
输入分2行。每行分别先给出多项式非零项的个数。再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式说明:
输出分2行。分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。
数字间以空格分隔,但结尾不能有多余空格。
例子输入与输出:
序号 | 输入 | 输出 |
1 |
4 3 4 -5 2 6 1 -2 0 |
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 |
2 |
2 1 2 1 0 |
1 4 -1 0 |
3 |
2 -1000 1000 1000 0 |
-1000000 2000 2000000 1000 -1000000 0 |
4 |
0 |
0 0 |
代码例如以下:
#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;
}
最新文章
- Marquee 滚动参数
- CocoaLumberjack
- mysql 时间戳 按周、日、月 统计方法 附 date格式
- mysql中You can&#39;t specify target table for update in FROM clause错误
- js对象转到字符串
- 【Xamarin开发 Android 系列 5】 Xamarin 的破解
- 关于js封装框架类库之属性操作
- 【codevs1001】[bzoj1050]舒适的路线
- 在vue中优雅地实现简单页面逆传值
- python中的函数对象与闭包函数
- linux下的清屏命令
- cocos2dx模拟器修改窗口大小
- mui弹出菜单
- C#序列化与反序列化以及深拷贝浅拷贝
- 【AUC】二分类模型的评价指标ROC Curve
- Transport failed: java.io.EOFException
- 值得一做》关于一道暴搜BZOJ1024(EASY+)
- 快速搭建maven私服 Artifactory on Docker
- ubuntu下ssh服务相关操作
- Android开发者必知的5个开源库
热门文章
- 基于visual Studio2013解决C语言竞赛题之0602最大值函数
- 一步一步重写 CodeIgniter 框架 (8) —— 视图的嵌套输出与返回
- 在Eclipse/MyEclipse中安装spket插件
- 文件操作中的FLAG(O_RDONLY,O_WRONLY )的值
- BZOJ 1014: [JSOI2008]火星人prefix( splay + hash )
- java io学习记录(路径分隔符)
- win7(64位)php5.5-Apache2.4-环境安装
- Git 文件状态的转换
- Qt核心剖析: moc
- SSH框架总结(框架分析+环境搭建+实例源码下载)(转)