1002 A+B for Polynomials (25 分)
题目链接
一、算法分析
设立一个double类型的ans数组存下两次读入后的结果,然后输出即可。
要注意一点:系数非0才要输出
二、代码实现
#include<bits/stdc++.h>
using namespace std;
#define N 1005
double ans[N];
int Ans, tmx;
void init(){
int k, n;
double x;
scanf("%d", &k);
for(int i = 1; i <= k; ++ i){
scanf("%d%lf", &n, &x);
if(i == 1) tmx = max(n, tmx);
ans[n] += x;
}
return ;
}
int main(){
init();
init();
for(int i = 0; i <= tmx; ++ i)
if(ans[i]) Ans ++;
printf("%d", Ans);
for(int i = tmx; i >= 0; -- i)
if(ans[i]){
printf(" %d %.1f", i, ans[i]);
}
return 0;
}
三、我跟柳神的差不多,把她的代码粘在下面
#include <iostream>
using namespace std;
int main() {
float c[1001] = {0};
int m, n, t;
float num;
scanf("%d", &m);
for (int i = 0; i < m; i++) {
scanf("%d%f", &t, &num);
c[t] += num;
}
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d%f", &t, &num);
c[t] += num;
}
int cnt = 0;
for (int i = 0; i < 1001; i++) {
if (c[i] != 0) cnt++;
}
printf("%d", cnt);
for (int i = 1000; i >= 0; i--) {
if (c[i] != 0.0)
printf(" %d %.1f", i, c[i]);
}
return 0;
}