PAT1002_a + b
题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805526272000000
单词:
polynomials:n. 多项式
exponents n.指数
coefficients n.系数
解题思路:
将数字的下标作为指数,数组存储的数值作为系数,然后直接相加,最后按照格式输出。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define eps 1e-2
const int maxn = 1005;
double a[maxn];
int main(void) {
int maxx = 0, minn = 1005;
int tmp; bool f = true; //true:升序,false:降序
for(int i = 1; i <= 2; i ++) {
int k; scanf("%d", &k);
for(int j = 1; j <= k; j ++) {
int y; double x; scanf("%d%lf", &y, &x);
if(j != 1) {
if(y > tmp) f = true;
if(y < tmp) f = false;
}
a[y] += x;
maxx = max(maxx, y);
minn = min(minn, y);
tmp = y;
}
}
int cnt = 0;
for(int i = maxx; i >= minn; i --)
if(fabs(a[i]) >= eps) cnt ++;
printf("%d", cnt);
for(int i = maxx; i >= minn; i --)
if(fabs(a[i]) >= eps)
printf(" %d %.1lf", i, a[i]);
puts("");
return 0;
}
坑点:输出的格式直接按照从降序输出即可,不用去判断。
我的第一次的写法是先去判断输入的升降序情况,然后输出和输入保持一直,但是有一个点wa了,后来全部降序输出就AC了。我感觉是题目的问题,没说清楚。
多积累多审题。