PAT (Advanced Level) Practice : 1002 A+B for Polynomials (25分)
阿新 • • 發佈:2020-11-14
1002 A+B for Polynomials (25分)
測試點2和測試點6的坑
測試點2:係數結果可能是負數
測試點6:最後所有係數都是0,要返回一個0,而且最後不得帶有空格。
實現
雜湊表:直接定址法
hash[1001]={0}
每次讀入指數和係數,指數作為下標,將係數加在hash上。
最後統計不為0的桶數,輸出。
注意精度控制,要控制一位精度。
程式碼
#include <iostream> #include <vector> using namespace std; #include <cmath> #include <stack> #include <queue> #include <map> #include <sstream> //#include <algorithm> #include <deque> #include <iomanip> int main() { double hash1[1001]={0}; int k; int n; double a; cin>>k; for(int i=0;i<k;i++) { cin>>n>>a; hash1[n]+=a; } cin>>k; for(int i=0;i<k;i++) { cin>>n>>a; hash1[n]+=a; } int count1=0; for(int i=0;i<1001;i++) { if(hash1[i]!=0) count1++; } if(count1==0) cout<<count1<<endl; else cout<<count1<<" "; vector<int> indexes; for(int i=1000;i>=0;i--) { if(hash1[i]!=0) { indexes.push_back(i); } } for(int i=0;i<indexes.size();i++) { if(i==indexes.size()-1) { cout<<indexes[i]<<" "; cout<<setiosflags(ios::fixed); cout<<setprecision(1)<<hash1[indexes[i]]; }else { cout<<indexes[i]<<" "; cout<<setiosflags(ios::fixed); cout<<setprecision(1)<<hash1[indexes[i]]<<" "; } } return 0; }