社区讨论
Wronganswer on 8
P2553[AHOI2001] 多项式乘法参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lvwflypo
- 此快照首次捕获于
- 2024/05/07 21:33 2 年前
- 此快照最后确认于
- 2024/05/07 21:43 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
string s;
long long a[550];
long long b[550];
long long ans[550];
bool Judge(char x){
if(x>='0'&&x<='9')return true;
return false;
}
int main(){
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
while(getline(cin,s)){
bool fl=0;
int L=s.length(),num=0;
if(s.find('*')!=string::npos)fl=true;
if(fl==false)continue;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(ans,0,sizeof(ans));
for(int i=0,tt=0;i<L;i+=tt){
tt=0;
int x=0;
if(Judge(s[i])){
int j=i;
while(Judge(s[j]))++tt,x=(x<<1)+(x<<3)+s[j]^48,j++;
while(s[j]==' ')++s[j];
if(s[j]=='a'){
j+=2,tt+=2;
int y=0;
while(Judge(s[j]))++tt,y=(y<<1)+(y<<3)+s[j]^48,j++;
if(fl)a[y]+=x;
else b[y]+=x;
}
else if(s[j]=='+'||s[j]==')'||s[j]=='*'||j==L)
if(fl)a[0]+=x;
else b[0]+=x;
}
if(s[i]=='*'||i+(tt?tt:1)-1==L-1){
if(s[i]=='*')++tt;
fl=0;
}
if(tt==0)tt=1;
}
for(int i=0;i<=30;++i)
{
for(int j=0;j<=30;++j){
ans[i+j]+=a[i]*b[j];
}
}
int r=300;
while(r>=0&&ans[r]==0)--r;
bool fr=true;
if(r==-1){
cout<<0<<endl;
continue;
}
for(int i=r;i>=0;--i){
if(fr==0)printf("+");
if(ans[i]==0)continue;
fr=0;
if(i==0){printf("%d",ans[i]);continue;}
printf("%da^%d",ans[i],i);
}
cout<<endl;
}
return 0;
}
CPP回复
共 0 条回复,欢迎继续交流。
正在加载回复...