YZOI Easy Round 2_化簡(simplify.c/cpp/pas)

來源:互聯網
上載者:User

標籤:

Description

給定一個多項式,輸出其化簡後的結果。

Input

一個字串,只含有關於字母x 的多項式,不含括弧與分式,沒有多餘的空格。

Output

一個字串,化簡後的多項式,按照次數從大到小的順序輸出各項。

Input Sample

x^3+3*x^4-2*x^3+1-x

Output Sample

3*x^4-x^3-x+1

Hint

每項係數<10,次數<6,項數<20。字串長度不超過100。

很煩的類比   代碼如下:

#include<iostream>#include<cstdio>using namespace std;const int maxn=1000+10;string s;int a[maxn],lc=1,len;bool first=true;int main(){//freopen("simplify.in","r",stdin);//freopen("simplify.out","w",stdout);cin>>s;len=s.size();if(len==1){cout<<s[0];return 0;}for(int i=0;i<len;i++){if(s[i]==‘x‘){if(i==3){if(s[0]==‘-‘){if(s[4]==‘^‘){a[s[5]-‘0‘]-=s[1]-‘0‘;}else{a[1]-=s[1]-‘0‘;}continue;}}if(s[0]>=‘0‘&&s[0]<=‘9‘&&i==2){if(s[3]==‘^‘){a[s[4]-‘0‘]+=s[0]-‘0‘;}else{a[1]+=s[0]-‘0‘;}continue;}//if(i==0)//{//a[1]++;//continue;//}if(s[i+1]==‘^‘){if(i==0){a[s[i+2]-‘0‘]++;continue;}if(s[i-1]==‘*‘){if(s[i-3]==‘+‘)a[s[i+2]-‘0‘]+=s[i-2]-‘0‘;else if(s[i-3]==‘-‘)a[s[i+2]-‘0‘]-=(s[i-2]-‘0‘);}else{if(i==0){a[s[i+2]-‘0‘]++;continue;}if(s[i-1]==‘+‘||s[i-1]==‘-‘){if(s[i-1]==‘-‘)a[s[i+2]-‘0‘]--;elsea[s[i+2]-‘0‘]++;}else{a[s[i+2]-‘0‘]--;}}}else{if(s[i-1]==‘+‘){a[1]++;}else{a[1]--;}}}else{if(s[i]>=‘0‘&&s[i]<=‘9‘){if(s[i-1]==‘^‘||s[i+1]==‘*‘)continue;a[0]+=s[i]-‘0‘;}}}for(int i=0;i<len;i++){if(s[i]==‘^‘)lc=max(lc,s[i+1]-‘0‘);}for(int i=lc;i>=0;i--){if(a[i]==0)continue;if(i==0){if(a[i]>0){if(first){cout<<a[i];first=false;continue;}cout<<‘+‘<<a[i];}else{cout<<‘-‘<<a[i];}continue;}if(i==1){if(a[i]>0){if(a[i]==1){if(first){cout<<"x";first=false;continue;}cout<<"+x";}else{if(first){cout<<a[i]<<"*x";first=false;continue;}cout<<"+"<<a[i]<<"*x";}}else{if(a[i]==-1){cout<<"-x";}else{cout<<a[i]<<"*x";}}continue;}if(a[i]>0){if(a[i]==1){if(first){cout<<"x^"<<i;first=false;continue;}else{cout<<"+x^"<<i;}}else{if(first){cout<<a[i]<<"*x^"<<i;first=false;continue;}else{cout<<"+"<<a[i]<<"*x^"<<i;cout<<9999999<<endl;}}}else{if(a[i]==-1){cout<<"-x^"<<i;}else{cout<<a[i]<<"*x^"<<i;}}}//cout<<endl;//for(int i=8;i>=0;i--)//cout<<a[i]<<‘ ‘;//cout<<endl;//cout<<a[3]<<endl;return 0;}

YZOI Easy Round 2_化簡(simplify.c/cpp/pas)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.