问题描述:
计算两个一元多项式的乘积。
输入每行两个多项式,以一个空格分隔,多项式格式为 (a_n x^n+ ldots +a_1x+a_0)。
每行长度不超过(100),(0 每组数据一行,根据次数由高到低顺序输出两个多项式乘积的非零项系数,两个系数之间由一个空格分隔。 input output 代码 #include void multiply(char* s1,char* s2,int* result) } int main() while (scanf("%s %s",s1,s2)==2) int flag=0; { return 0;x+1 x-1
x^2-3x+1 x^3
x+2 2
1 -1
1 -3 1
2 4
#include
#include
void readpo(char*s,int*co)
{
while(*s)
{
int sign=1,coef=0,dim=0;
if(*s=='+')s++;
else if(*s=='-') sign=-1,s++;
while(isdigit(*s))
{
coef=coef*10+*s-'0';
s++;
}
if(coef==0)coef=1;
if(*s!='x')
{
co[0]=coef*sign;return;
}
else s++;
if(*s=='^') s++;
while(isdigit(*s))
{
dim=dim*10+*s-'0';
s++;
}
if(dim==0) dim=1;
co[dim]=coef*sign;
}
}
{
int co1[50]={0},co2[50]={0};
readpo(s1,co1);
readpo(s2,co2);
for(int i=0;i<50;i++)
for(int j=0;j<50;j++)
result[i+j]+=co1[i]*co2[j];
{
char s1[101],s2[101];
{ int result[100]={0};
multiply(s1,s2,result);
for (int i=99;i>=0;i--)
{if (result[i])
flag?printf(" %d",result[i]):printf("%d",result[i]);
flag=1;
}
}
printf("n");
}
}



