zoukankan      html  css  js  c++  java
  • P1067 多项式输出 (模拟)

    题目描述

    一元nn次多项式可用如下的表达式表示:

    其中,a_i x^i 称为i次项,ai 称为i次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

    1. 多项式中自变量为xx,从左到右按照次数递减顺序给出多项式。

    2. 多项式中只包含系数不为00的项。

    3. 如果多项式n次项系数为正,则多项式开头不出现“+”号,如果多项式n次项系

    数为负,则多项式以“-”号开头。

    4. 对于不是最高次的项,以“+”号或者“−”号连接此项与前一项,分别表示此项

    系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于00次的项,

    其系数的绝对值为11,则无需输出 1)。如果xx的指数大于1,则接下来紧跟的指数部分的形

    式为“x^b”,其中 b为 x的指数;如果 x的指数为1,则接下来紧跟的指数部分形式为“x”;

    如果 x 的指数为0,则仅需输出系数即可。

    5. 多项式中,多项式的开头、结尾不含多余的空格。

    输入输出格式

    输入格式:

    输入共有 2 行

    第一行1个整数,n,表示一元多项式的次数。

    第二行有 n+1个整数,其中第ii个整数表示第ni+1 次项的系数,每两个整数之间用空格隔开。

    输出格式:

    输出共 1 行,按题目所述格式输出多项式。

    输入样例#1: 

    5 
    100 -1 1 -3 0 10
    输出样例#1:
    100x^5-x^4+x^3-3x^2+10

    题解:这道题很考验细心程度,WA了两次,调了半小时才AC。注意分首项、中间项、尾项考虑问题,特别要注意的是系数为1 -1 0时的变通,指数为1时也要注意。

    #include<iostream>
    using namespace std;
    
    int main(){
        int n;
        int a[108];
        while(cin>>n){
                int cnt = 0;
            for(int i=0; i<=n; i++){
                cin>>a[i];
                if(a[i] == 0) cnt ++;
            }
            if(n == 0){
                cout<<a[0]<<endl;
                continue;
            }
            for(int i=0; i<=n; i++){
                if(a[i] != 0){
                        //尾项处理
                    if(i == n){
                        if(a[i] > 0 && cnt < n)
                            cout<<"+"<<a[i];
                        else
                            cout<<a[i];
                        continue;
                    }
                            //首项处理
                        if(i == 0 && a[i] != 1 && a[i]!= -1)
                            cout<<a[i]<<"x";
                        else if(i == 0 && a[i] == 1)
                            cout<<"x";
                        else if(i == 0 && a[i] == -1)
                            cout<<"-"<<"x";
    
                            //中间项处理
                        if(i < n && i > 0 && a[i] > 1)
                            cout<<"+"<<a[i]<<"x";
                        else if(i < n && i > 0 && a[i] == 1)
                            cout<<"+"<<"x";
                        else if(i < n && i > 0 && a[i] < -1)
                            cout<<a[i]<<"x";
                        else if(i < n && i > 0 && a[i] == -1)
                            cout<<"-"<<"x";
                  //指数处理
    if(n-i != 1){ cout<<"^"<<n-i; } } } cout<<endl; } }
  • 相关阅读:
    tar命令,vi编辑器
    Linux命令、权限
    Color Transfer between Images code实现
    利用Eclipse使用Java OpenCV(Using OpenCV Java with Eclipse)
    Matrix Factorization SVD 矩阵分解
    ZOJ Problem Set
    Machine Learning
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/czsharecode/p/9593791.html
Copyright © 2011-2022 走看看