PTA-1002
原先主要错误:
没有考虑到有关0的相关情况
整理思路
- 无非就是在相同的指数的情况下,系数相加
- 因为最后是要从大到小输出来。
注意
要对最后的结果进行四舍五入;
PTA的英语题对英语不好的我真心不友好。
#include<map>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
map<int, double> sl;
int _index[21];
bool k[1001];
bool cmp(int a, int b) {
return a > b;
}
int main() {
memset(k, 0, sizeof(k));
int num = 0;
for (int i = 0; i < 2; i++) {
int n;
cin >> n;
for (int j = 0; j < n; j++) {
int a;
double b;
cin >> a >> b;
if (k[a] != 0) {
sl[a] += b;
//sl表示指数情况
//其中k表示指数有没有
} else {
_index[num] = a;
num++;
sl[a] = b;
k[a] = 1;
}
}
}
sort(_index, _index + num, cmp);
int nuum = num;
for (int i = 0; i < num; i++)
//这里用看看四舍五入情况;
if (fabs(sl[_index[i]] - 0) < 0.05)
nuum--;
cout << nuum;
for (int i = 0; i < num; i++) {
if (fabs(sl[_index[i]] - 0) >= 0.05)
printf(" %d %.1f", _index[i], sl[_index[i]]);
}
return 0;
}