1555:Polynomial Showdown

keyword

C++

概要

多項式の係数が与えられるのでそれを多項式の形にして出力する問題。
形式が面倒だけど基本的にはやるだけ。

string make(int deg, int coef){
    ostringstream os;
    os << abs(coef);
    ostringstream oss;
    oss << deg;
    string ret = os.str();
    if(deg==0){
        return ret;
    }
    if(deg==1){
        return (ret=="1")?"x":ret+'x';
    }
    return (ret=="1")?"x^"+oss.str():ret+"x^"+oss.str();
}

int main(){
    string line;
    while(getline(cin,line)){
        stringstream ss(line);
        int a, last=0;
        vector<int> as;
        string ans="";
        while(ss>>a) as.push_back(a);
        for(int i=0; !as.empty(); i++){
            if(as.back()){
                ans = make(i,as.back()) + (last==0?"":last<0?" - ":" + ") + ans;
                last = as.back();
            }
            as.pop_back();
        }
        if(last < 0) ans = "-"+ans;
        if(ans=="") ans = "0";
        printf("%s\n",ans.c_str());
    }
    return 0;
}