Written by Master

大师  •  5个月前


include <bits/stdc++.h>

using namespace std; //Written by Master

int main() {

int n;
cin >> n; // 读取多项式的次数 n

// 动态分配一个大小为 n+1 的整数数组,用于存储多项式的系数
// 数组索引从 1 开始使用,因此大小为 n+1
int *num = new int[n + 1];

string s; // 初始化一个空字符串 s,用于构建多项式的字符串表示

// 读取多项式的 n+1 个系数(注意这里数组索引从 1 开始)
for (int i = 1; i <= n + 1; i++)
{
    cin >> num[i]; // 读取第 i 个系数并存储在 num[i] 中
}

int i = n; // 初始化 i 为 n,用于反向遍历多项式的系数
int j = 0; // 初始化 j 为 0,用于访问系数数组 num

// 反向遍历多项式的系数,从最高次项开始构建多项式的字符串表示
for (; i >= 0; i--)
{
    j++; // 每次循环开始时,j 的值增加 1,用于访问 num 数组中的下一个系数

    // 如果当前系数不为 0,则处理该项
    if (num[j] != 0)
    {
        // 如果当前系数大于 0 并且不是第一项(即不是常数项),则在字符串 s 的末尾添加一个 '+'
        if (num[j] > 0 && j != 1)
        {
            s.push_back('+');
        }

        // 检查当前项的指数是否不为 0,即该项不是常数项
        if (i != 0)
        {
            // 如果当前项的指数为 1,则处理一次项的情况
            if (i == 1)
            {
                // 如果系数为 1,则在字符串 s 中添加 "x",因为系数 1 通常在多项式中不显示
                if (num[j] == 1)
                {
                    s += "x";
                }
                // 如果系数为 -1,则在字符串 s 中添加 "-x"
                else if (num[j] == -1)
                {
                    s += "-x";
                }
                // 如果系数既不是 1 也不是 -1,则在字符串 s 中添加系数和 "x",例如 "3x"
                else
                {
                    s += to_string(num[j]) + "x";
                }
            }
            // 如果当前项的指数不为 1,则处理一般情况
            else
            {
                // 如果系数为 1,则在字符串 s 中添加 "x^" + 指数
                if (num[j] == 1)
                {
                    s += "x^" + to_string(i);
                }
                // 如果系数为 -1,则在字符串 s 中添加 "-x^" + 指数
                else if (num[j] == -1)
                {
                    s += "-x^" + to_string(i);
                }
                // 如果系数既不是 1 也不是 -1,则在字符串 s 中添加系数和 "x^" + 指数,例如 "3x^2"
                else
                {
                    s += to_string(num[j]) + "x^" + to_string(i);
                }
            }
        }
        // 如果当前项的指数为 0,则处理常数项的情况
        else
        {
            // 如果系数不为 0,则在字符串 s 中添加系数
            if (num[j] != 0)
            {
                s += to_string(num[j]);
            }
        }
    }
}

cout << s; // 输出构建好的多项式字符串表示
delete[] num; // 释放动态分配的数组内存
return 0;

}


评论:

请先登录,才能进行评论