• 洛谷P1067 多项式输出 题解 模拟


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

    解题思路:
    我们从 (a_n) 遍历到 (a_0),按照如下思路来进行模拟:

    1. 如果系数 (a_i=0),则第 (i) 项不用输出任何信息(即:不用进行接下来的判断);
    2. 第一个非零的系数 (a_i) 如果 (gt 0),则不需要在前面加‘+’,(a_i) 之后所有 (gt 0) 的系数都有在前面加一个‘+’;
    3. 所有 (gt 0) 的系数 (a_i) 都需要在前面加一个负号;
    4. 如果 (|a_i|=1) 或者 (i = 0),则不用输出 (|a_i|);否则,输出 (|a_i|)(这里 (|x|) 表示 (x) 的绝对值);
    5. 如果 (i>1),需要输出 x^i 的格式;否则,如果 (i=1),只需要输出 x;否则((i=0)),不需要输出带 x的信息。

    按照这种思路,实现代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    int n, a;
    bool flag;
    int main() {
        cin >> n;
        for (int i = n; i >= 0; i --) {
            cin >> a;   // 我这里直接用a来表示参数ai了
            if (a != 0) {   // 对于为0的参数不需要输出任何信息
                if (!flag) {    // 如果是第一个非零系数
                    flag = true;
                    if (a < 0) cout << "-"; // 第一个非零系数如果是附属需要输出‘-’,是整数不需要输出‘+’
                }
                else {  // 如果不是第一个非零系数
                    if (a > 0) cout << "+";
                    else cout << "-";
                }
                if (abs(a) > 1 || i == 0) cout << abs(a); // 如果|ai|>1或者i==0,需要输出系数
                if (i > 1) cout << "x^" << i;   // 如果i>1,需要输出x^i
                else if (i == 1) cout << "x";   // 如果i==1,需要输出x
                                                // 否则,不需要输出
            }
        }
        return 0;
    }
    
  • 相关阅读:
    08 字体属性设置-font-family
    函数-函数进阶-生成器调用方法
    函数-函数进阶-斐波那契
    函数-函数进阶-列表生成式
    函数-函数进阶-装饰器带参数2
    函数-函数进阶-装饰带参数的函数
    函数-函数进阶-装饰器流程分析
    函数-函数进阶-装饰器
    函数-函数进阶-闭包
    函数-函数进阶-作用域的查找空间
  • 原文地址:https://www.cnblogs.com/quanjun/p/12697200.html
Copyright © 2020-2023  润新知