PAT甲级 1002 A+B for Polynomials

原题链接 1002 A+B for Polynomials (25 分)

【题目大意】
给定两个多项式A和B,输出 A+B

【注意】
当aNi与bNi之和为0的时候,不输出其对应的指数和系数

#include<iostream>
#include<vector>
using namespace std;
int main(){
    float num;
    vector<float> line1, line2;
    while(cin>>num){
        line1.push_back(num);
        auto x = cin.get();
        if(x=='\n') break;
    }
    while(cin>>num){
        line2.push_back(num);
        auto x = cin.get();
        if(x=='\n') break;
    }
    int index1=1, index2=1;
    vector<float> ans;
    while(index1!=line1.size() && index2!=line2.size()){
        if(line1[index1]>line2[index2]){
            ans.push_back(line1[index1++]);
            ans.push_back(line1[index1++]);
        } else if(line1[index1]<line2[index2]){
            ans.push_back(line2[index2++]);
            ans.push_back(line2[index2++]);
        } else{
            if((line1[index1+1]+line2[index2+1])!=0){
                ans.push_back(line1[index1]);
                ans.push_back(line1[index1+1]+line2[index2+1]);
            }
            index1+=2;
            index2+=2;
        }
    }
    if(index1==line1.size()&&index2!=line2.size()){
        while(index2!=line2.size())
            ans.push_back(line2[index2++]);
    }
        
    if(index2==line2.size()&&index1!=line1.size()){
        while(index1!=line1.size())
            ans.push_back(line1[index1++]);
    }   

    printf("%d", ans.size()/2);
    for(int i=0;i<ans.size();i+=2)
        printf(" %.0f %.1f", ans[i], ans[i+1]);
    
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。