洛谷P1067-多项式输出(模拟好题!)

简介: 洛谷P1067-多项式输出(模拟好题!)

题目描述:


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

f(x)=anxn+an−1xn−1+⋯+a1x+a0,an≠0f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots +a_1x+a_0,a_n\ne 0 f(x)=anxn+an−1xn−1+⋯+a1x+a0,an=0


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


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


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


3.如果多项式nnn次项系数为正,则多项式开头不出现“+”号,如果多项式nnn次项系数为负,则多项式以“-”号开头。


4.对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于000次的项,其系数的绝对值为111,则无需输出 111)。如果xxx的指数大于111,则接下来紧跟的指数部分的形式为“xbx^bxb”,其中 bb b为 xx x的指数;如果 xxx的指数为1 11,则接下来紧跟的指数部分形式为“xxx”;如果 xxx 的指数为0 00,则仅需输出系数即可。


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


输入:


输入共有 222 行

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

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


输出:



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


样例输入1:


5

100 -1 1 -3 0 10


样例输出1:


100x^5-x^4+x^3-3x^2+10


样例输入2:


3

-50 0 0 1  


样例输出2:


-50x^3+1  


程序代码:


#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n,a;
  cin>>n;
  for(int i=n;i>=0;i--)//从次数高的开始输出 
  {
    cin>>a;
    if(i==0)//次数为0,也就是常数项(单独处理) 
    {
      if(a>0&&i!=n)//系数为正 且 次数不是最高次 
        cout<<"+";//先输出"+"号 
      if(a!=0)//系数不为0,就输出 
        cout<<a;
      continue;
    }
    if(a>1)//系数为正,且不等于1 
    {
      if(i!=n)//不是最高次 
        cout<<"+";//先输出"+"号 
      cout<<a<<"x";//再输出系数和对应的x 
      if(i>1)
        cout<<"^"<<i;//最后输出次数(这个表示次数的符号"^"千万千万千万不能放在x后面输出) 
      continue;//续上一行注释,因为如果放在x后面,但此时x的次数如果为1,那么只需要输出x即可, 
        //如果放在x后面,而x的次数为1,则结果就输出x^,所以肯定WA(我在这就WA了两次!!!) 
    } 
    if(a<-1)//系数为负,且不等于-1 
    {
      cout<<"-";//无论哪一项,只要为负,就先输出"-"号 
      cout<<abs(a)<<"x";//再输出负系数的绝对值和x 
      if(i>1)
        cout<<"^"<<i;//最后输出次数 
      continue;
    }
    if(a==0)//如果系数为0,直接跳过 
      continue;
    if(a==1)//系数为1(单独处理) 
    {
      if(i!=n)//不是最高次 
        cout<<"+";//先输出"+"号 
      cout<<"x";//因为系数为1,所以只需输出x即可 
      if(i>1)
        cout<<"^"<<i;//最后输出次数 
      continue;
    }
    if(a==-1)//系数为-1(单独处理) 
    {
      cout<<"-";//无论哪一项,只要为负,就先输出"-"号 
      cout<<"x";//系数为-1,且上一行已将负号输出,所以只需输出x
      if(i>1)
        cout<<"^"<<i;//最后输出次数 
      continue;
    }
  }
  return 0;
}


相关文章
|
6月前
|
存储
【洛谷 P1255】数楼梯 题解(递归+记忆化搜索+高精度)
这是一个使用动态规划解决的“数楼梯”问题。给定楼梯数`N`,求不同上楼方式的数量。程序通过递归函数`f()`计算,其中`f(x) = f(x - 1) + f(x - 2)`,初始条件`f(1) = 1`,`f(2) = 2`。考虑到数据规模可能很大,使用了高精度加法运算。样例输入`4`,输出`5`。代码中定义了一个存储中间结果的向量`mem`,并提供了一个用于显示高精度数的`printv()`函数。
112 0
|
6月前
|
存储 索引
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
42 1
|
7月前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
88 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
7月前
|
存储 机器学习/深度学习 Windows
【题型总结】模拟运算
【题型总结】模拟运算
48 0
|
7月前
【每日一题Day250】LC1253重构 2 行二进制矩阵 | 贪心模拟
【每日一题Day250】LC1253重构 2 行二进制矩阵 | 贪心模拟
51 0
|
7月前
考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
128 0
|
算法
转:用一个例子说明Floyd算法
弗洛伊德算法(Floyd&#39;s algorithm)是一种用于求带权图中最短路径的算法,适用于带有正负权边的图(但不能有负环)。这种算法也有时被称为弗洛伊德-沃尔什算法。该算法基于动态规划,其时间复杂度为O(V^3),其中V是图中的顶点数。此外,该算法还可用于检测图中的负环并求出传递闭包。
132 2
|
人工智能 算法 C++
[**算法**]关于数字反转的两道例题的分析思考
两个题目看着很像,但是细节不太一样,一个是去处理浮点,(其中有用STL大法的和将小数点前后和小数点分开进行输入的还有利用字符串的读写来处理的)还有一个是去处理整数
160 0