[NOIP2009 普及组] 多项式输出

Posted 114514-1919810

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[NOIP2009 普及组] 多项式输出相关的知识,希望对你有一定的参考价值。

题目描述

一元 \\(n\\) 次多项式可用如下的表达式表示:

\\[f(x)=a_nx^n+a_n-1x^n-1+\\cdots +a_1x+a_0,a_n\\ne 0 \\]

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

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

  2. 多项式中只包含系数不为 \\(0\\) 的项。

  3. 如果多项式 \\(n\\) 次项系数为正,则多项式开头不出 + 号,如果多项式 \\(n\\) 次项系数为负,则多项式以 - 号开头。

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

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

输入格式

输入共有 \\(2\\)

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

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

输出格式

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

样例 #1

样例输入 #1

5 
100 -1 1 -3 0 10

样例输出 #1

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

样例 #2

样例输入 #2

3 
-50 0 0 1

样例输出 #2

-50x^3+1

提示

NOIP 2009 普及组 第一题

对于100%数据,\\(0 \\le n \\le 100\\),$-100 \\le \\(系数\\) \\le 100$


\\(\\textupd 2022.8.1\\):新增加一组 Hack 数据。

代码及其思路

思路

系数为\\(a\\),项数为\\(n\\)

对项数进行循环\\(i\\)

若系数为\\(0\\),则不输出
若系数不为\\(0\\),进行输出
输出格式:
\\(\\quad\\)如果不是首项且系数大于\\(0\\),那么输出\\(+\\)
\\(\\quad\\)如果系数不是\\(1\\)\\(-1\\)或者指数为\\(0\\),那么输出系数\\(a\\)
\\(\\quad\\)如果系数是\\(-1\\)且指数不是\\(0\\),那么输出\\(-\\)
\\(\\quad\\)如果指数大于\\(1\\),那么输出\\(x\\)^
\\(\\quad\\)如果指数等于\\(1\\),那么输出\\(x\\)

上代码

#include<iostream>
using namespace std;
int main()

	int n,a;
	cin>>n;
	for(int i=n;i>=0;i--)
	
		cin>>a;
		if(a!=0)
		
			if(i!=n&&a>0)cout<<"+";
			if(a!=1&&a!=-1||i==0)cout<<a;
			if(a==-1&&i!=0)cout<<"-";
			if(i>1)cout<<"x^"<<i;
			if(i==1)cout<<"x";
		
	
	return 0;

多项式输出(NOIP2009 普及组第一题)

描述

一元 n 次多项式可用如下的表达式表示:
技术分享
其中,aixi 称为i次项,ai称为i次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

1. 多项式中自变量为x,从左到右按照次数递减顺序给出多项式。 
2. 多项式中只包含系数不为0 的项。

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

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

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

格式

输入格式

共有2 行。 
第一行 1 个整数,n,表示一元多项式的次数(1 ≤ n ≤ 100)。

第二行有 n+1 个整数,其中第i 个整数表示第n-i+1 次项的系数,每两个整数之间用空格隔开。
多项式各次项系数的绝对值均不超过100。

输出格式

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

样例1

样例输入1

5  
100 -1 1 -3 0 10

样例输出1

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

限制

每个测试点1s。
















以上是关于[NOIP2009 普及组] 多项式输出的主要内容,如果未能解决你的问题,请参考以下文章

多项式输出 2009年NOIP全国联赛普及组

多项式输出(NOIP2009 普及组第一题)

[NOIP2009] 普及组

noip2009 普及组

[NOIP2009普及组]细胞分裂

[NOIP2009]多项式输出