日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷--P1067 多项式输出

發布時間:2024/2/28 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷--P1067 多项式输出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

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

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

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

  • 多項式中只包含系數不為00的項。

  • 如果多項式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

    說明

    NOIP 2009 普及組 第一題

    對于100%數據,0 \le n \le 1000≤n≤100,-100 \le?100≤系數\le 100≤100

    ?

    得分:60

    第一次因為沒有加對1次的判斷 得了50分

    #include <iostream> using namespace std;int n; int xishu[100+10]; int cnt = 0; int main() {scanf("%d", &n);for(int i = n; i >= 0; i--){scanf("%d", &xishu[i]);}for(int i = n; i >= 0; i--){//特殊位置nif(i == n && ( (xishu[i] > 0 && xishu[i] != 1) || (xishu[i] < 0 && xishu[i] != -1))){cnt++;printf("%dx^%d", xishu[i], i);continue;}else if(i == n && xishu[i] == 0) continue;else if(i == n && xishu[i] == 1){cnt++;printf("x^%d",i);continue;}else if(i == n && xishu[i] == -1){cnt++;printf("-x^%d",i);continue;}//特殊位置0if(i == 0 && (xishu[i] > 0 || xishu[i] < 0)){if(cnt != 0){if(xishu[i] > 0) printf("+%d",xishu[i]);else printf("%d", xishu[i]);}else if(cnt == 0){if(xishu[i] > 0) printf("%d",xishu[i]);else printf("%d", xishu[i]);}}else if(i == 0 && xishu[i] == 0) continue;//特殊位置1if(i == 1 && xishu[i] == 0) continue;else if( i == 1 && ((xishu[i] > 0 && xishu[i] != 1) || (xishu[i] < 0 && xishu[i] != -1))){if(cnt != 0){cnt++;if(xishu[i] > 0) printf("+%dx",xishu[i]);else printf("%dx", xishu[i]);}else if(cnt == 0){cnt++;if(xishu[i] > 0) printf("%dx",xishu[i]);else printf("%dx", xishu[i]);}}else if(i == 1 && xishu[i] == 1){if(cnt != 0){cnt++;printf("+x");}else if(cnt == 0){cnt++;printf("x");}continue;}else if(i == 1 && xishu[i] == -1){cnt++;printf("-x");continue;}//其他位置if((i!=0 && i!=n) && xishu[i] == 0) continue;else if((i!=0 && i!=n) && ((xishu[i] > 0 && xishu[i] != 1) || (xishu[i] < 0 && xishu[i] != -1))){if(cnt != 0){cnt++;if(xishu[i] > 0) printf("+%dx^%d",xishu[i],i);else printf("%dx^%d", xishu[i],i);}else if(cnt == 0){cnt++;if(xishu[i] > 0) printf("%dx^%d",xishu[i],i);else printf("%dx^%d", xishu[i],i);}}else if((i!=0 && i!=n) && xishu[i] == 1){if(cnt != 0){cnt++;printf("+x^%d",i);}else if(cnt == 0){cnt++;printf("x^%d",i);}continue;}else if((i!=0 && i!=n) && xishu[i] == -1){cnt++;printf("-x^%d", i);continue;}}return 0; }

    ?

    別人AC代碼:

    作者:洛谷--cplusplus

    #include<bits/stdc++.h> 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(abs(a)>1||i==0)cout<<a; 輸出系數(系數不為正負1或指數為0)if(a==-1&&i)cout<<"-"; -1系數特判,常數項已特判if(i>1)cout<<"x^"<<i; 二次及以上輸出指數if(i==1)cout<<"x"; 一次項}} }

    嗚嗚嗚,我太菜了。別人短短幾行代碼解決的事情,我要一百行還解決不了....

    總結

    以上是生活随笔為你收集整理的洛谷--P1067 多项式输出的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。