PTA-1002

image
image


原先主要错误:

没有考虑到有关0的相关情况

观看的大佬代码


整理思路

  1. 无非就是在相同的指数的情况下,系数相加
  2. 因为最后是要从大到小输出来。

注意

要对最后的结果进行四舍五入;
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;
}
posted @ 2024-05-10 21:32  海&贼  阅读(2)  评论(0编辑  收藏  举报