PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642
PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642
题目描述:
This time, you are supposed to find A+B where A and B are two polynomials.
译:这一次,你要找到 A + B ,其中 A , B 是两个多项式
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
.
译:每个输入文件包含一个测试用例,每个用例占两行,每行包含多项式的如下信息 : K N1 aN1 N2 aN2 ... NK aNK
,k
是多项式中非零项的个数,Ni
和 aNi
(i=1,2,⋯,K) 分别表示多项式的 指数 和 系数。 已知 1 ≤ K ≤ 10
,0 ≤ NK < ⋯ < N2 < N1 ≤ 1000
.
Output Specification (输出说明):
For each test case you should output the sum 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 to 1 decimal place.
译:对于每个测试用例,你应该在一行中输出 A + B 的和,和输入具有相同的格式。注意:在行末不能有多与的空格,并且精确到1位小数。
Sample Input (样例输入):
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output (样例输出):
3 2 1.5 1 2.9 0 3.2
The Idea:
/*
(1) 对于多项式的存储,由于每一个指数 int 型对应有一个系数 double 型 ,故利用 map ,
由于输出的时候需要按照系数从大到小的输出,所以利用 按照 key 的值降序排列的 map 结构。
*/
map<int , double , greater<int> > mp;
/*
(2) 但是值得注意的是:题目中说明是非零项的个数,那么很有可能在相加的时候出现系数为 0 的时候
这种时候显然这一项已经不符合我们的要求。
为此我再设立了一个 map 用来存储满足要求的答案
*/
The Codes:
#include<bits/stdc++.h>
using namespace std ;
map<int , double , greater<int> > mp ;// 储存最初 A + B 的和 ,默认排序方式为 key 的降序
map<int , double , greater<int> > ans ; // 储存本题 A + B 的和 ,默认排序方式为 key 的降序
int main(){
int k1 , k2 , n ;
double an ;
cin >> k1 ; // 输入 A 的非零项数 以及每一项的 指数 和 系数
for(int i = 0 ; i < k1 ; i ++){
cin >> n >> an ;
mp[n] += an ; // 以指数为 key ,输入的 值 增加到 value 上
}
cin >> k2 ; // 输入 B 的非零项数 以及每一项的 指数 和 系数
for(int i = 0 ; i < k2 ; i ++){
cin >> n >> an ;
mp[n] += an ; // 以指数为 key ,输入的 值 增加到 value 上
}
for(map<int,double,greater<int> >::iterator it =mp.begin() ; it != mp.end() ;it ++)
if(fabs((*it).second ) > 1e-6) // 浮点数,判断是否 系数相加之后 为 0
ans[(*it).first] = (*it).second ;// 非零项用 ans 存储
cout << ans.size() ; // 输出 A + B 的和 非零项数
for(map<int,double,greater<int> >::iterator it =ans.begin();it != ans.end();it++){
//cout<<" "<<(*it).first<<" "<<(*it).second;
printf(" %d %.1f",(*it).first,(*it).second);
}
cout << endl ; // 行尾换行符
return 0;
}
PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642的更多相关文章
- PAT (Advanced Level) Practice 1031 Hello World for U (20 分) 凌宸1642
PAT (Advanced Level) Practice 1031 Hello World for U (20 分) 凌宸1642 题目描述: Given any string of N (≥5) ...
- PAT (Advanced Level) Practice 1023 Have Fun with Numbers (20 分) 凌宸1642
PAT (Advanced Level) Practice 1023 Have Fun with Numbers (20 分) 凌宸1642 题目描述: Notice that the number ...
- PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642 题目描述: 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每 ...
- PAT (Advanced Level) Practice 1002 A+B for Polynomials 分数 25
This time, you are supposed to find A+B where A and B are two polynomials. Input Specification: Each ...
- PAT (Advanced Level) Practice 1055 The World's Richest (25 分) (结构体排序)
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...
- PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...
- PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642 题目描述: "单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大 ...
- PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642
PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642 题目描述: At the beginning of ever ...
- PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 目录 PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) ...
随机推荐
- code to markdown auto converter
code to markdown auto converter code => markdown how to import a js file to a markdown file? // a ...
- React Native 三端同构
React Native 三端同构 https://www.ibm.com/developerworks/cn/web/wa-universal-react-native/index.html rea ...
- Apple & HTML5 app
Apple & HTML5 app https://developer.apple.com/cn/news/?id=09062019b https://developer.apple.com/ ...
- Word带数学公式发布博客
Word公式编辑器无法直接上传博客,一个一个的转换LaTeX还要加$,十分麻烦. 下面是我昨天摸索出来的办法.作为博客新人,这个问题困扰我一晚上,能解决我也是非常高兴的. 如果各位前辈有好方法的话,请 ...
- SpringBoot(九):SpringBoot集成Mybatis
(1)新建一个SpringBoot工程,在pom.xml中配置相关jar依赖 贴代码: <!--加载mybatis整合springboot--> <dependency> &l ...
- AXU2CGB开发板验证Vitis加速基本平台创建
Vitis 加速基本平台创建 1.Vivado 工程创建,硬件平台bd 图如下所示 1.1.双击Block图中ZYNQ核,配置相关参数 1.1.1.Low Speed 配置,在 I/O Configu ...
- fastjson 反弹shell
目录 如下文章说得很不详细,只是用于记录我的步骤,初次利用的人,建议找别的博客文章学习. 准备一台公网服务器 cd test python -m SimpleHTTPServer 8888 javac ...
- Python3.x 基础练习题100例(61-70)
练习61: 题目: 打印出杨辉三角形. 程序: if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in ...
- [msys2]集成到右键菜单
集成到右键菜单 在资源管理器中,空白处右键(right-clicking on folder backround in Windows Explorer)会弹出菜单,其中有如"在此处打开cm ...
- C#无损压缩图片
/// <summary> /// 根据指定尺寸得到按比例缩放的尺寸,返回true表示以更改尺寸 /// </summary> /// <param name=" ...