洛谷题单指南-模拟和高精度-P1067 [NOIP2009 普及组] 多项式输出

原题链接:https://www.luogu.com.cn/problem/P1067

题意解读:

模拟法依次输出多项式内容即可,但是需要考虑的周全,主要有以下关键点:

1、系数为0时不输出多项式

2、第一个符号,只有负号才输出

3、次数不为0时,不输出为1的系数;次数为0时,输出所有系数

4、次数为1时,不输出次数;次数为0时不输出x^次数;次数大于1时,才输出完整x^次数

100分代码:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;

    string result = "";

    int a;

    bool first = true; //是否第一次输出符号
    for(int i = 1; i <= n + 1; i++)
    {
        cin >> a;
        int k = n - i + 1; //多项式的次数
        if(a) //如果系数不为0才输出
        {
            if(first) 
            {
                if(a < 0) cout << "-"; //如果第一次输出符号,只输出负号
                first = false; //同时改变条件变成不是第一次
            }
            else cout << (a > 0 ? '+' : '-'); //如果不是第一次输出符号,正负都输出
                
            if(abs(a) != 1 || !k) cout << abs(a); //系数绝对值不为1,或者次数是0,输出系数绝对值
            if(k == 1) cout << "x"; //次数为1,只输出x
            if(k > 1) cout << "x^" << k; //次数大于1,输出x^次数
        }
    }

    return 0;
}

 

posted @ 2024-01-19 14:45  五月江城  阅读(55)  评论(0编辑  收藏  举报