站外题求调
查看原帖
站外题求调
580202
Siegerkranz_2735楼主2022/10/7 21:09

#include<bits/stdc++.h>
using namespace std;
string s;
int start,cnt=1,flag=0,term[105][4];
void setup(int begin,int i){
	for(start=begin,flag=0;(s[start]!='+'||s[start]!='-')&&s[start]<=s.size()-1;start++){
		if(s[start]=='^'||s[start]=='x'){flag=1;continue;}
		term[i][flag]=10*term[i][flag]+s[start]-'0';
	}
	term[i][3]=(s[start]=='+'?1:0);
	term[i][1]=max(1,term[i][1]);
	if(!flag)term[i][2]=term[i][0],term[i][0]=0;
	return;
}
void out_put(int i){
	cout<<(term[i][3]?"+":"-");
	cout<<term[i][0]*term[i][1];
	if(term[i][1]-1)cout<<"x^"<<term[i][1]-1;
	return;
}
int main(){
	cin>>s;setup(0,1);
	if(term[1][3])cout<<"-";
	cout<<term[1][0]*term[1][1];
	if(term[1][1]-1)cout<<"x^"<<term[1][1]-1;
	for(int i=start;i<=s.size()-1;i++){
		if(s[i]=='+')setup(i,cnt++);
	}
	for(int i=2;i<=cnt;i++){
		if(!term[i][2])continue;
		out_put(i);
	}
	return 0;
} 
2022/10/7 21:09
加载中...