POJ1555 Polynomial Showdown (输出多项式)

题意分析

给出一个度为8的多项式,按照书写的格式将其输出出来。
注意如果系数为1的时候,不要输出多余的1,如果第一个系数为负,要输出一个符号。如果多项式的次数为1,不要输出多余的1.

思路就是先找到一个系数不为1的,然后将其输出,输出的时候注意正负,而且要特判是否系数为1,特判是否为次数为1,特判是否是常数项。

如果找到了一个,那么说明多项式不为0,否则为零。

接下来写一个OutPut函数,此函数就是输出一位系数。在函数中也是要判断是否系数为1,是否次数为1,是否为常数项。

代码总览

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int nmax = 10;
int index[nmax];
bool isAbsOne(int tar) {return abs(tar) == 1;}
bool isZero(int tar) {return tar == 0;}
void Output(int now){
    if(index[now] == 0) return;
    else if(index[now] > 0) printf(" + ");
    else printf(" - ");
    if(now == 1){
        if(index[now] == 1) printf("x");
        else printf("%dx",abs(index[now]));
    }else if(now == 0){
        printf("%d",abs(index[now]));
    }else{
        if(index[now] == 1) printf("x^%d",now);
        else printf("%dx^%d",abs(index[now]),now);
    }
}
int main(){
    while(scanf("%d",&index[8]) != EOF){
        for(int i = 7;i>=0;--i) scanf("%d",&index[i]);
        int now = 8;
        while(index[now] == 0 && now >=0){
            now--;
        }
        if(now < 0){
            printf("0\n");
            continue;
        }
        if(isAbsOne(index[now])){
            if(index[now] < 0) printf("-");
            if(now == 1) printf("x");
            else if(now == 0) printf("1");
            else printf("x^%d",now);
        }else{
            if(index[now]<0) printf("-");
            if(now == 1) printf("%dx",abs(index[now]));
            else if(now == 0) printf("%d",abs(index[now]));
            else printf("%dx^%d",abs(index[now]),now);
        }
        for(int i = now-1;i >=0 ;--i) Output(i);
        printf("\n");
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值