NOJ1005多项式加法

NOJ1005 多项式加法
(代码通过测试,巨坑在于全是0的时候也要输出0)
#include
#include
#include
#define N 200

int main()
{
    int ex;
    int counttt = 2;
    int exp = N;
    int value = 0;
    int List[2][N] = { 0 };
    //input list
    while (counttt-- > 0)
    {
        exp = N;
        while (exp!=-1)
        {
            scanf("%d %d", &value, &exp);
            if (exp == -1)
                break;
            List[counttt][exp] = value;
        }
    }

    //fitst list
    for (ex = N-1; ex >= 0; ex--)
    {
        if (ex == 0 && List[1][ex] == 0)
            printf("%d", List[1][ex]);
        if (List[1][ex] == 0)
            continue;
        if (List[1][ex] == 1)
        {
            if (ex == 1)
                printf("X");
            else if (ex == 0)
                printf("1");
            else
                printf("X^%d", ex);
            break;
        }
        if (List[1][ex] == -1)
        {
            if (ex == 1)
                printf("-X");
            else if (ex == 0)
                printf("-1");
            else
                printf("-X^%d", ex);
            break;
        }
        if (List[1][ex] > 1)
        {
            if (ex == 1)
                printf("%dX",List[1][ex]);
            else if (ex == 0)
                printf("%d",List[1][ex]);
            else
                printf("%dX^%d",List[1][ex], ex);
            break;
        }
        if (List[1][ex] < -1) { if (ex == 1) printf("%dX", List[1][ex]); else if (ex == 0) printf("%d", List[1][ex]); else printf("%dX^%d", List[1][ex], ex); break; } } for (ex--; ex >= 0; ex--)
    {
        if (List[1][ex] == 0)
            continue;
        if (List[1][ex] == 1)
        {
            if (ex == 1)
                printf("+X");
            else if (ex == 0)
                printf("+1");
            else
                printf("+X^%d", ex);
        }
        if (List[1][ex] == -1)
        {
            if (ex == 1)
                printf("-X");
            else if (ex == 0)
                printf("-1");
            else
                printf("-X^%d", ex);
        }
        if (List[1][ex] > 1)
        {
            if (ex == 1)
                printf("+%dX", List[1][ex]);
            else if (ex == 0)
                printf("+%d", List[1][ex]);
            else
                printf("+%dX^%d", List[1][ex], ex);
        }
        if (List[1][ex] < -1) { if (ex == 1) printf("%dX", List[1][ex]); else if (ex == 0) printf("%d", List[1][ex]); else printf("%dX^%d", List[1][ex], ex); } } printf("\n"); //second list for (ex = N - 1; ex >= 0; ex--)
    {
        if (ex == 0 && List[0][ex] == 0)
            printf("%d", List[0][ex]);
        if (List[0][ex] == 0)
            continue;
        if (List[0][ex] == 1)
        {
            if (ex == 1)
                printf("X");
            else if (ex == 0)
                printf("1");
            else
                printf("X^%d", ex);
            break;
        }
        if (List[0][ex] == -1)
        {
            if (ex == 1)
                printf("-X");
            else if (ex == 0)
                printf("-1");
            else
                printf("-X^%d", ex);
            break;
        }
        if (List[0][ex] > 1)
        {
            if (ex == 1)
                printf("%dX", List[0][ex]);
            else if (ex == 0)
                printf("%d", List[0][ex]);
            else
                printf("%dX^%d", List[0][ex], ex);
            break;
        }
        if (List[0][ex] < -1) { if (ex == 1) printf("%dX", List[0][ex]); else if (ex == 0) printf("%d", List[0][ex]); else printf("%dX^%d", List[0][ex], ex); break; } } for (ex--; ex >= 0; ex--)
    {
        if (List[0][ex] == 0)
            continue;
        if (List[0][ex] == 1)
        {
            if (ex == 1)
                printf("+X");
            else if (ex == 0)
                printf("+1");
            else
                printf("+X^%d", ex);
        }
        if (List[0][ex] == -1)
        {
            if (ex == 1)
                printf("-X");
            else if (ex == 0)
                printf("-1");
            else
                printf("-X^%d", ex);
        }
        if (List[0][ex] > 1)
        {
            if (ex == 1)
                printf("+%dX", List[0][ex]);
            else if (ex == 0)
                printf("+%d", List[0][ex]);
            else
                printf("+%dX^%d", List[0][ex], ex);
        }
        if (List[0][ex] < -1)
        {
            if (ex == 1)
                printf("%dX", List[0][ex]);
            else if (ex == 0)
                printf("%d", List[0][ex]);
            else
                printf("%dX^%d", List[0][ex], ex);
        }

    }
    printf("\n");
    //Added list
    for (ex = 0; ex < N; ex++) List[1][ex] += List[0][ex]; //print added list for (ex = N - 1; ex >= 0; ex--)
    {
        if (ex == 0 && List[1][ex] == 0)
            printf("%d", List[1][ex]);
        if (List[1][ex] == 0)
            continue;
        if (List[1][ex] == 1)
        {
            if (ex == 1)
                printf("X");
            else if (ex == 0)
                printf("1");
            else
                printf("X^%d", ex);
            break;
        }
        if (List[1][ex] == -1)
        {
            if (ex == 1)
                printf("-X");
            else if (ex == 0)
                printf("-1");
            else
                printf("-X^%d", ex);
            break;
        }
        if (List[1][ex] > 1)
        {
            if (ex == 1)
                printf("%dX", List[1][ex]);
            else if (ex == 0)
                printf("%d", List[1][ex]);
            else
                printf("%dX^%d", List[1][ex], ex);
            break;
        }
        if (List[1][ex] < -1) { if (ex == 1) printf("%dX", List[1][ex]); else if (ex == 0) printf("%d", List[1][ex]); else printf("%dX^%d", List[1][ex], ex); break; } } for (ex--; ex >= 0; ex--)
    {
        if (List[1][ex] == 0)
            continue;
        if (List[1][ex] == 1)
        {
            if (ex == 1)
                printf("+X");
            else if (ex == 0)
                printf("+1");
            else
                printf("+X^%d", ex);
        }
        if (List[1][ex] == -1)
        {
            if (ex == 1)
                printf("-X");
            else if (ex == 0)
                printf("-1");
            else
                printf("-X^%d", ex);
        }
        if (List[1][ex] > 1)
        {
            if (ex == 1)
                printf("+%dX", List[1][ex]);
            else if (ex == 0)
                printf("+%d", List[1][ex]);
            else
                printf("+%dX^%d", List[1][ex], ex);
        }
        if (List[1][ex] < -1)
        {
            if (ex == 1)
                printf("%dX", List[1][ex]);
            else if (ex == 0)
                printf("%d", List[1][ex]);
            else
                printf("%dX^%d", List[1][ex], ex);
        }
    }

    printf("\n");
    return 0;
}
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注