2009 junior T1 多项式输出 题解
題目描述
一元 n 次多項(xiàng)式可用如下的表達(dá)式表示:
其中,aixi稱為 i 次項(xiàng),ai 稱為 i 次項(xiàng)的系數(shù)。給出一個(gè)一元多項(xiàng)式各項(xiàng)的次數(shù)和系數(shù),請(qǐng)按照如下規(guī)定的格式要求輸出該多項(xiàng)式:
1.多項(xiàng)式中自變量為 x,從左到右按照次數(shù)遞減順序給出多項(xiàng)式。
2.多項(xiàng)式中只包含系數(shù)不為 0 的項(xiàng)。
3.如果多項(xiàng)式 n 次項(xiàng)系數(shù)為正,則多項(xiàng)式開頭不出現(xiàn)“+”號(hào),如果多項(xiàng)式 n 次項(xiàng)系
數(shù)為負(fù),則多項(xiàng)式以“-”號(hào)開頭。
4.對(duì)于不是最高次的項(xiàng),以“+”號(hào)或者“-”號(hào)連接此項(xiàng)與前一項(xiàng),分別表示此項(xiàng)系數(shù)為正或者系數(shù)為負(fù)。
緊跟一個(gè)正整數(shù),表示此項(xiàng)系數(shù)的絕對(duì)值(如果一個(gè)高于 0 次的項(xiàng),其系數(shù)的絕對(duì)值為 1,則無(wú)需輸出 1)。
如果 x 的指數(shù)大于 1,則接下來(lái)緊跟的指數(shù)部分的形式為“x^b”,其中 b 為 x 的指數(shù);
如果 x 的指數(shù)為 1,則接下來(lái)緊跟的指數(shù)部分形式為“x”;
如果 x 的指數(shù)為 0,則僅需輸出系數(shù)即可。
5.多項(xiàng)式中,多項(xiàng)式的開頭、結(jié)尾不含多余的空格。
輸入格式:
輸入共有 2 行
第一行 1 個(gè)整數(shù),n,表示一元多項(xiàng)式的次數(shù)。
第二行有 n+1 個(gè)整數(shù),其中第 i 個(gè)整數(shù)表示第 n-i+1 次項(xiàng)的系數(shù),每?jī)蓚€(gè)整數(shù)之間用空格隔開。
輸出格式:
輸出共 1 行,按題目所述格式輸出多項(xiàng)式。
輸入樣例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
【數(shù)據(jù)范圍】
對(duì)于100%數(shù)據(jù),0<=n<=100,-100<=系數(shù)<=100
解題思路
純模擬,對(duì)于第一題來(lái)說(shuō)難度較高,容易考慮漏,只拿到部分分。
不說(shuō)多,直接在代碼上面注釋
代碼
#include <stdio.h> #include <iostream> using namespace std; int main(){int a;int sum[101];cin>>a;for(int i=0;i<a+1;i++){cin>>sum[i];}//第一個(gè)數(shù)if(sum[0]==1){//第一個(gè)數(shù)是正的時(shí)候不需要+,例如1不是+1一樣printf("x^%d",a);//當(dāng)a是1的時(shí)候不是1a^n,只是a^n,需要特殊說(shuō)明。}else if(sum[0]==-1){printf("-x^%d",a);//同上,需要負(fù)號(hào)}else{printf("%dx^%d",sum[0],a);//當(dāng)a不是1和-1是,需要xa^n,例如2a^5}//其他數(shù)(一次項(xiàng)和常數(shù)項(xiàng)除外),并且是從高到低for(int i=1;i<a-1;i++){if(sum[i]>0){if(sum[i]==1){printf("+x^%d",a-i);//a-i從降冪排列,1的時(shí)候不需要+號(hào)}else{printf("+%dx^%d",sum[i],a-i);//不是1的時(shí)候需要+號(hào)}//等于0時(shí)無(wú)輸出}else if(sum[i]<0){if(sum[i]==-1){printf("-x^%d",a-i);//特殊判斷,同上}else{printf("%dx^%d",sum[i],a-i);//。。。同上}}}//一次項(xiàng),0時(shí)不用判斷。。。//需要特判因?yàn)樽詈鬀](méi)有^1if(sum[a-1]==-1){printf("x",sum[a-1]);}else if(sum[a-1]==1){printf("+x",sum[a-1]);}else if(sum[a-1]>0){printf("+%dx",sum[a-1]);}else if(sum[a-1]<0){printf("%dx",sum[a-1]);}//常數(shù)項(xiàng)if(sum[a]>0){printf("+%d",sum[a]);}else if(sum[a]<0){printf("%d",sum[a]);}return 0; }。
。
。
。
。
。
寫這道題好累啊。。。
祝大家好運(yùn)
。
。
。
。
。
。
祝我好運(yùn)
總結(jié)
以上是生活随笔為你收集整理的2009 junior T1 多项式输出 题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MTK Android Driver知识
- 下一篇: 如何修改Github仓库的descrip