【7003】&&【a203】合并多项式
Time Limit: 3 second
Memory Limit: 2 MB
问题描述
求两个一元多项式的和。输入多项式方式为:多项式项数、每项系数和指数,按指数从大到小的顺序输入。输出多项式方式为:多项式项数、每项系数和指数,按指数从大到小的顺序输出,合并后的系数如果为0,则不输出该项。(假设系数、指数均为整数)
Input
输入n+m+2行,第一行输入为第一个多项式的项数n,接下来的n行的是第一个多项式的系数和指数。接着是第二个多项式的项数m,接下来的m行是第二个多项式的系数和指数。(系数与指数用一个空格隔开)
Output
输出若干行,第一行是合并后多项式的项数K,接下来的K行是每行多项式的系数和指数。(系数与指数用一个空格隔开)
Sample Input
4
-5 6
3 2
1 1
8 0
5
8 9
6 6
-3 2
5 1
-20 0
Sample Output
4
8 9
1 6
6 1
-12 0
【题解】
设置一个bo,数组,用来存指数为x的系数bo[x]。输入x,y 令bo[y]+=x即可,要注意y可能为负数,所以要设置一个zbo 和fbo数组,表示y是整数和负数的情况。
最后从一个很大的数递减到0,遇到bo[i]!=0 就输出 bo[i] 和i即可。然后是负数 ,从1到一个很大的数进行输出 遇到bo[i]!=0,输出bo[i]和-i;
【代码】
#include <cstdio>
#include <cstring> int n,m,zbo[100000],fbo[100000],num = 0; void input_data()
{
memset(zbo,0,sizeof(zbo));
memset(fbo,0,sizeof(fbo));//memset函数用于初始化,头文件是cstring
scanf("%d",&n); //输入第一个多项式的项数
for (int i = 1;i <= n;i++) //依次输入n个项
{
int x,y;
scanf("%d %d",&x,&y);
if (y >= 0)
zbo[y] += x;
else
fbo[-y] += x;
}
scanf("%d",&m); //输入第二个多项式的项数
for (int i = 1;i <= m;i++) //依次输入m个项
{
int xx,yy;
scanf("%d %d",&xx,&yy);
if (yy >= 0)
zbo[yy] += xx;
else
fbo[-yy] += xx;
}
} void output_ans()
{
for (int i = 99999;i >= 0;i--) //先要统计要输出的个数。
if (zbo[i] != 0)
num++;
for (int i = 1;i <=99999;i++)
if (fbo[i] != 0)
num++; printf("%d\n",num); for (int i = 99999;i >= 0;i--) //输出完个数之后再输出具体的项。
if (zbo[i] != 0)
printf("%d %d\n",zbo[i],i);
for (int i = 1;i <=99999;i++)
if (fbo[i] != 0)
printf("%d %d\n",fbo[i],-i);
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
input_data();
output_ans();
return 0;
}
【代码】
【7003】&&【a203】合并多项式的更多相关文章
- hdu 5615 Jam's math problem(判断是否能合并多项式)
方法一:由十字相乘相关理论我们能知道,如果要有p,k,q,m,那么首先要有解,所以b*b-4*a*c要>0,然而因为p,k,q,m是正整数,所以代表x1,x2都是有理数,有理数是什么鬼呢?就是解 ...
- 多项式A除以B
这个问题我是在PAT大区赛题里遇见的.题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数 ...
- Java_多项式加法
题目内容: 一个多项式可以表达为x的各次幂与系数乘积的和,比如: 2x6+3x5+12x3+6x+20 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出. ...
- PAT 甲级1002 A+B for Polynomials (25)
1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...
- matlab化简符号表达式
化简符号表达式计算机毕竟还是挺笨的, 经过一系列的符号计算后, 得到的结果可能只有它自己才能看懂, Matlab提供大量函数以用于符号表达式的化简. collect(f): 函数用途是合并多项式中相同 ...
- codechef : TREDEG , Trees and Degrees
其实有原题,生成树计数 然鹅这题里面是两道题, 50pts 可以用上面那题的做法直接过掉,另外 50pts 要推推式子,搞出 O n 的做法才行(毕竟多项式常数之大您是知道的) 虽说这道题里面是没有 ...
- CodeForces 958F3 Lightsabers (hard) 启发式合并/分治 多项式 FFT
原文链接http://www.cnblogs.com/zhouzhendong/p/8835443.html 题目传送门 - CodeForces 958F3 题意 有$n$个球,球有$m$种颜色,分 ...
- 51nod 1907(多项式乘法启发式合并)
题目: 分析: 对于一个确定的生成子图,很明显是在一个连通块上走,走完了再跳到另一个连通块上,假设连通块个数为cnt,那么答案一定是$min(a_{cnt-1},a_cnt,..,a_{n-1})$ ...
- 合并两个以单链表形式表示的关于x的多项式(基于c语言)
只写函数内部的,不懂得可以看前面一篇文章对链表的实现: pLinklist addBothLinklist(Linklist* first,Linklist* second){ Linklist *n ...
随机推荐
- 时间模块(import time)
时间戳时间: float数据类型,给机器用的 print(time.time()) =>1533713657.5423343 结构化时间: 上下两种格式的中间状态 能够通过属性名来获取对象中的值 ...
- RapidMiner Studio 入门
http://docs.rapidminer.com/studio/getting-started/ RapidMiner Studio 入门 FEIFEI MA 2015-12-07RAPIDMIN ...
- Array操作的方法
//concat连接数组连接一个或多个数组 //var a = [1,2,3]; //var c=[4,5] //var b = a.concat(c); //console.log(b); //jo ...
- python 正则表达式匹配过程
- 洛谷 P3958 奶酪 并查集
目录 题面 题目链接 题面 题目描述 输入输出格式 输入格式 输出格式: 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P3958 奶酪 题面 题目描述 现有一块大奶酪 ...
- 阿里云容器Kubernetes监控(九) - Kubernetes事件离线工具kube-eventer正式开源
前言 监控是保障系统稳定性的重要组成部分,在Kubernetes开源生态中,资源类的监控工具与组件百花齐放.除了社区自己孵化的metrics-server,还有从CNCF毕业的Prometheus等等 ...
- Python之整数类型
整数:18,73,84 每一个整数都有如下的功能:class int(object): """ int(x=0) -> int or long int(x, bas ...
- initwithcoder和 initwithframe 区别?
每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是和类似的initWithNibName/awakeFromNib/initWithCod ...
- 【JZOJ4888】【NOIP2016提高A组集训第14场11.12】最近公共祖先
题目描述 YJC最近在学习树的有关知识.今天,他遇到了这么一个概念:最近公共祖先.对于有根树T的两个结点u.v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u.v的祖先且x的深度尽可能大. ...
- iOS app 设计推荐
见微知著,谈移动缺省页设计 http://www.cocoachina.com/design/20150303/11186.html Facebook产品设计总监!设计APP时的14个必考题 http ...