大师 • 5个月前
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;
}
评论:
请先登录,才能进行评论