哈理工 2137 方程转换(模拟题)

方程转换
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 231(57 users) Total Accepted: 50(45 users) Rating: Special Judge: No
Description
小A和小B是灰常好的盆友,小A总是能把小B难住,这次小B给小A出了一道期末必考题。

已知,f(x)=ax6+bx5+cx4+dx3+ex2+fx+g;现在我们要把方程替换成另外一种形式,f(m,n,p,i,j,k)=am+bn+cp+di+ej+fk+z;也就是,m=x6,n=x5,p=x4,i=x3,j=x2,k=x,z=g。

Input
有多组测试数据,第一行T(T<100),代表有T组测试数据,然后输入a,b,c,d,e,f,g的值,a,b,c,d,e,f,g均为小于10的9次方的整数。

Output
输出替换后的方程。

Sample Input
3

2 8 19 -6 72 13 100

36 0 4 0 8 17 3

0 0 0 0 0 0 0

Sample Output
2m+8n+19p-6i+72j+13k+100

36m+4p+8j+17k+3

0

下面是AC代码:
这个题的坑点挺多的。
下面是AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

char c[6]={'m','n','p','i','j','k'};
int a[7];
int main()
{
    int t;
    while(~scanf("%d",&t))
    while(t--)
    {
        for(int i=0;i<7;i++)
        {
            scanf("%d",&a[i]);
        }
        int flag=0;
        for(int i=0;i<6;i++)
        {
            if(a[i]==0)
            {
                continue;
            }
            if(a[i]>0)
            {
                if(flag==0)
                {
                    flag=1;
                    if(a[i]*c[i]==c[i])
                    {
                        printf("%c",c[i]);
                    }
                    else
                    {
                        printf("%d%c",a[i],c[i]);
                    }
                }
                else
                {
                    printf("+");
                    if(a[i]==1)
                    {
                        printf("%c",c[i]);
                    }
                    else
                    {
                        printf("%d%c",a[i],c[i]);
                    }
                }
            }
            else
            {
                if(flag==0)
                {
                    flag=1;
                    if(a[i]*c[i]==-c[i])
                    {
                        printf("-%c",c[i]);
                    }
                }
                else
                {
                    if(a[i]==-1)
                    {
                        printf("-%c",c[i]);
                    }
                    else
                    {
                        printf("%d%c",a[i],c[i]);
                    }
                }
            }
        }
        if(a[6]==0)
        {
            if(flag==0)
            printf("0");
        }
        else if(a[6]>0)
        {
            if(flag==1)
            {
                printf("+%d",a[6]);
            }
            else
            {
                printf("%d",a[6]);
            }
        }
        else
        {
            printf("%d",a[6]);
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(哈理工oj)