1. 程式人生 > >P1067 多項式輸出(模擬水題)

P1067 多項式輸出(模擬水題)

題目描述

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

其中,a_ix^iai​xi稱為ii次項,a_iai​ 稱為ii次項的係數。給出一個一元多項式各項的次數和係數,請按照如下規定的格式要求輸出該多項式:

  1. 多項式中自變數為xx,從左到右按照次數遞減順序給出多項式。

  2. 多項式中只包含係數不為00的項。

  3. 如果多項式nn次項係數為正,則多項式開頭不出現“++”號,如果多項式nn次項系

數為負,則多項式以“-−”號開頭。

4. 對於不是最高次的項,以“++”號或者“-−”號連線此項與前一項,分別表示此項

係數為正或者係數為負。緊跟一個正整數,表示此項係數的絕對值(如果一個高於00次的項,

其係數的絕對值為11,則無需輸出 11)。如果xx的指數大於11,則接下來緊跟的指數部分的形

式為“x^bxb”,其中 bb為 xx的指數;如果 xx的指數為11,則接下來緊跟的指數部分形式為“xx”;

如果 xx 的指數為00,則僅需輸出係數即可。

5. 多項式中,多項式的開頭、結尾不含多餘的空格。

輸入輸出格式

輸入格式:

 

輸入共有 22 行

第一行11 個整數,nn,表示一元多項式的次數。

第二行有 n+1n+1個整數,其中第ii個整數表示第n-i+1n−i+1 次項的係數,每兩個整數之間用空格隔開。

 

輸出格式:

 

輸出共 11 行,按題目所述格式輸出多項式。

 

輸入輸出樣例

輸入樣例#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<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

int main() {
	int n;
	cin>>n;
	int a[1005];
	for(int t=0; t<n; t++) {
		scanf("%d",&a[t]);
	}
	cin>>a[n];
	for(int t=0; t<n; t++) {
		if(t==0) {
			if(a[t]!=0) {
				if(abs(a[t])!=1)
					cout<<a[t];
				else if(a[t]==-1) {
					cout<<"-";
				}
				if(n-t>1)
					cout<<"x^"<<n-t;
				else
					cout<<"x";
			}


		} else if(a[t]>0&&t!=0) {
			if(a[t]==1) {
				cout<<"+";
			} else  {

				cout<<"+"<<a[t];
			}
			if(n-t>1)
				cout<<"x^"<<n-t;
			else
				cout<<"x";
		} else if(a[t]<0&&t!=0) {
			if(a[t]==-1) {
				cout<<"-";
			} else  {

				cout<<a[t];
			}
			if(n-t>1)
				cout<<"x^"<<n-t;
			else
				cout<<"x";
		}
	}
	if(a[n]>0) {
		cout<<"+"<<a[n]<<endl;
	}
	if(a[n]<0) {
		cout<<a[n]<<endl;
	}
	return 0;
}