PAT甲级1002 A+B for Poly 思路满分!

写在正文前:虽说佛系更文,但不得不说为了更博客让我对编程更加有兴趣了惹!这道题花了笔者整整一天时间…原因居然是,居然是!:少看一个限制条件,导致输出一直做不到满分!----好滴吧,不解释,就是太小白,另外英文还渣渣!不过,笔者具有打不死小强精神,终于在一天的结尾时做出来了,通过这题也学到了很多

请看题:

(注意看标注的地方,就因为忽略了那里,折磨了我一天)
不过也算是因祸得福吧,原本自己写的代码用了结构体以及三个数组,还有一些函数,写来写去足足有70多行,评分始终不过,求助网上大神,发现了这个满分思路,故将大神的c版改成自己的c++版本,特此分享给大家
在这里插入图片描述

题目讲解:

输入:两个多项式A,B进行相加,每个多项式格式:先输入K项,然后每一项的指数和系数
输出:输出K项(结果多项式的项数),按指数下降方向输出各个项。

思路分析

有两点需要重点注意:1)相加后系数和为0不输出;2)输出系数的结果保留小数点后一位
正式分析思路:
1.创建一个数组用来保存多项式A,用空间换时间,即数组A的空间为[1010],理论上可以创建成1010但是怕溢出,因此可以建大一点;
2.对于多项式B直接对应与A里指数相同的项进行相加减(what?听不懂…不急不急,看代码就懂!淡定…)
3.为了输出那些系数不为0的项,因此要用个count来统计一共有多少系数不为0
4.最后要按照指数由大到小进行输出

具体实现:

总代码如下:
在这里插入图片描述
这里建议大家自己敲一遍,最好不要直接复制,比心心啦
一、重要头文件略讲:
在这里插入图片描述
这个题主要用来输出小数点后一位
在这里插入图片描述
二、输入多项式A
在这里插入图片描述
其中p是指数,a[p]=k,就是指数为p的系数是k(个人认为这是这段代码出彩的第一点),很巧妙,也为B直接找对应相同指数的系数相加提供方便。
三、输入多项式B并进行加法
在这里插入图片描述
找对应指数进行系数相加。
四、输出部分
在这里插入图片描述
第一个for循环是找系数不为0的结果,因为最初初始化1010个都为0,因此这里就删掉了那些系数为0的项;第二个for循环是从指数大到小输出,并输出结果保留1位小数。

个人小小小小心得

在做编程题的时候,发现有时自己不是没有思路,而是思路很麻烦可能一道题会花两三个小时去做,导致很浪费时间,这个时候可以适当去查看一下别人的思路,有时别人思路会比我们自己的清晰且简单…总之要多多请教啦!但是前提是:要弄懂哟~
这篇文拖了好久才更…小白的拖延症+最近考试周!哎,加油吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值