算法提高 多項式輸出

算法提高 多項式輸出

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

f(x)=a[n]xn+a[n-1]x(n-1)+…+a[1]x+a[0], a[n]!=0

其中,a[i]x^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 ≤ n ≤ 100,多項式各次項係數的絕對值均不超過100。

輸出格式:

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

輸入樣例:

在這裏給出一組輸入。例如:

5
100 -1 1 -3 0 10

輸出樣例:

在這裏給出相應的輸出。例如:

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

輸入樣例:

在這裏給出一組輸入。例如:

3
-50 0 0 1

輸出樣例:

在這裏給出相應的輸出。例如:

-50x^3+1

代碼:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int n, cnt = 0, mi;//mi就是冪次,cnt用於保證第一個正數前無‘+’
	cin >> n;
	mi = n;
	vector<int>arr(n + 1);//存每一項的係數
	for (int i = 0; i < n + 1; i++)
	{
		cin >> arr[i];
	}
	for (int i = 0; i < n; i++)
	{
		if (arr[i] < 0)
		{
			if (arr[i] != -1)//冪次爲-1不輸出x
				cout << arr[i];
			else
				cout << '-';
			cout << "x";
			if (mi != 1)
				cout <<'^'<< mi;
			cnt++;
		}
		else if (arr[i]>0)
		{
			if (cnt != 0)
				cout << '+';
			if (arr[i] != 1)//冪次爲1不輸出x
				cout << arr[i];
			cout << "x";
			if (mi != 1)
				cout <<'^'<< mi;
			cnt++;
		}
		mi--;
	}
	if (arr[n] != 0)
	{
		if (arr[n] > 0)
			cout << '+' << arr[n];
		else
			cout << arr[n];

	}
	return 0;
}
發佈了55 篇原創文章 · 獲贊 8 · 訪問量 4001
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章