您的位置:首页 > 其它

poj 1996 The Highest Profits(数学多项式)

2016-07-25 22:59 260 查看
学长指点关键算法+自己模拟=解题。

#include<cstdio>

#include<iostream>

#include<cstring>

using namespace std;

int a[105];

int b[105];

int t[10005];

int over[10005];

int cun[10005];

int m,n;

int main()

{

    int z;

    scanf("%d",&z);

    while(z--)

    {

        memset(a,0,sizeof(a));

        memset(b,0,sizeof(b));

        memset(t,0,sizeof(t));

        memset(over,0,sizeof(over));

        memset(cun,0,sizeof(cun));

        scanf("%d%d",&m,&n);

        for(int j=0; j<m+1; j++)

            scanf("%d",&a[j]);

        for(int j=0; j<n+1; j++)

        {

            scanf("%d",&b[j]);

            t[j]=b[j];

        }

        ;

        for(int j=1; j<=m; j++)

        {

            for(int k=0; k<j*n+1; k++)

            {

                if(j==1)over[k]+=a[j]*b[k];

                else over[k]+=a[j]*cun[k];

            }

            memset(cun,0,sizeof(cun));

            for(int i=0; i<j*n+1; i++)

            {

                for(int k=0; k<n+1; k++)

                {

                    cun[i+k]+=t[i]*b[k];

                }

            }

            for(int i=0; i<(j+1)*n+1; i++)

            {

                t[i]=cun[i];

            }

        }

        ;

        printf("%d",over[0]+a[0]);

        for(int j=1; j<m*n+1; j++)

            printf(" %d",over[j]);

        putchar('\n');

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: