【PAT甲级题解记录】1002 A+B for Polynomials (25 分)
前言
Problem:1002 A+B for Polynomials (25 分)
Tags:模拟
Difficulty:剧情模式
想流点汗想流点血死而无憾Address:1002 A+B for Polynomials (25 分)
问题描述
This time, you are supposed to find A+B where A and B are two polynomials.
简单来说给定俩个多项式求和。
解题思路
- 多项式相加无非是同指数的系数相加,用一个map或者vector数组都可以轻松解决。(而且数据很小)
- 易错点是系数和为 0 0 0 时该项就不计入、不输出。
参考代码
#include<iostream>
#include<iomanip>
#include<vector>
using namespace std;
vector<double> v(1010, 0.f);// key:指数,value:系数
void addVector() { // 输入数据,更新 vector
int K, N;
double a;
cin >> K;
for (int i = 0; i < K; i++) {
cin >> N;
cin >> a;
v[N] += a;
}
}
void solution_1002() {
addVector();
addVector(); // 输入两行数据
int cnt = 0;
for (int i = 1000; i >= 0; i--) {
if (v[i]) cnt++;
}
cout << cnt;
for (int i = 1000; i >= 0; i--) {
if (v[i]) {
cout << fixed << setprecision(1) << " " << i << " " << v[i];
}
}
}
int main() {
solution_1002();
return 0;
}
总结
没别的,模拟题细节处理好就行了,虽然说PAT也没有罚时,但是少错总是好的。