您的位置:首页 > 其它

POJ1060

2016-07-26 17:25 295 查看
问题描述:多项式运算,此题涉及多项的加法、减法、乘法、取模四大运算。最后将多项式的计算结果表达式输出。

解题思路:对多项式的系数采用一维数组输入,对于多项式的次数,用数组下标的大小对应表示。注意:这里为了编写思路的方便,直接将输入的系数按数组从小到大存放,最后进行运算的时候,需要再加以变换。

code(c)

#include <stdio.h>
#include<string.h>
#define MAX 10010
int f[MAX],g[MAX],h[MAX],temp[MAX];
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int i,j,x,mul,imax,a;
memset(h,0,sizeof(h));
memset(temp,0,sizeof(temp));
scanf("%d",&f[0]);
for(i=1;i<=f[0];i++)
scanf("%d",&f[i]);
scanf("%d",&g[0]);
for(i=1;i<=g[0];i++)
scanf("%d",&g[i]);
scanf("%d",&h[0]);
for(i=1;i<=h[0];i++)
scanf("%d",&h[i]);
imax=0;
for(i=1;i<=f[0];i++)
{
if(f[i]==1)
for(j=1;j<=g[0];j++)
{
if(g[j]==1)
{
mul=(f[0]+1-i)+(g[0]+1-j)-1;
temp[mul]++;
if(temp[mul]%2==0)
temp[mul]=0;
}
}
}
for(i=1;i<MAX;i++)
{
if(temp[i]==1)
imax=i;
}
temp[0]=imax;
a=imax;
while(imax>=h[0])
{
x=imax-h[0];
for(j=1;j<=h[0];j++)
{
if(h[j]==1)
{
temp[h[0]-j+1+x]--;
if(temp[h[0]-j+1+x]==-1)
temp[h[0]-j+1+x]=1;
}

}

for(i=1;i<=a;i++)
{
if(temp[i]==1)
{
imax=i;
temp[0]=i;
}
}
}
printf("%d ",temp[0]);
for(i=temp[0];i>=1;i--)
printf("%d ",temp[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: