您的位置:首页 > 其它

PAT-甲级-1002 A+B for Polynomials

2017-10-12 15:02 627 查看

原文链接:PAT-甲级-1002

题目大意:

给两个多项式,每个多项式有K个项。每项由指数和系数构成。计算两个多个多项式的和,并按输入格式输出。

解题思路:

由于指数0<=N<=1000,所以可以使用一个数组存储多项式的项,下标作为指数,值为系数。这样读入两个多项式并相加就可以得到结果多项式,然后将数组中值不为0的个数统计,就是结果多项式的项数,然后输出。应该注意的是使用double进行存储的时候可能会出现误差,判断时候不为0的时候应该注意不能直接与0相比。

一开始我用了set来存指数,不用遍历数组,但是总是部分正确,很迷。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>

using namespace std;

const int MAXN = 1000 + 5;
const double esp = 0.04;

double ans[MAXN] = { 0 };

void input()
{
int num, ex;

4000
double co;
cin >> num;
while (num--) {
cin >> ex >> co;
ans[ex] += co;
}
}

int main()
{
input();
input();
int cnt = 0;
for (int i = 0; i < MAXN; i++) {
if (fabs(ans[i]) > esp) cnt++;
}
printf("%d", cnt);
for (int i = 1000; i >= 0; i--) {
if (fabs(ans[i]) > esp)  printf(" %d %0.1lf", i, ans[i]);
}
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: