3 条题解

  • 2
    @ 2022-12-27 9:06:53

    题目理解起来很好理解,就是分类麻烦点。

    1.先讨论符号。

    2.再讨论系数,指数,具体见下面代码。

    AC代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n, x;
        cin >> n;
        for (int i = n; i >= 0; i--)
        {
            cin >> x;
            if(x)
            {
                if (x > 0 && i != n) //为正并且不为第一个
                    cout << "+";
                if (x < 0) //为负的情况
                    cout << "-";    
                if (abs(x) != 1 || !i) //系数不为1且指数为0
                    cout << abs(x); //用函数,不迷路!
                if (i > 1) //指数不为1的情况
                    cout << "x^" << i;
                else if (i == 1) //指数为1的情况
                    cout << "x";
            }
        }
        return 0;
    }
    
    • 1
      @ 2022-10-13 21:15:09

      题前吐槽

      没啥技术含量,但是需要初中数学水平,还是道码农题,太坑人了!

      题解

      这道题就是模拟,输入之后一项一项输出。

      一项输出首先输出正负号。特判最高项正时不输出,负时输出 -;非最高项正时输出 +,负时输出 -

      然后输出系数,特判系数为1不输出,注意是绝对值进行特判,而且当指数为0还是得输出,否则输出。

      最后输出指数,特判为0不输出,特判为1只输出 xx,否则输出。

      #include <bits/stdc++.h>
      using namespace std;
      int n, a[105];
      int main()
      {
          scanf("%d", &n);
          for (int i = 1; i <= n + 1; i++)
              scanf("%d", &a[n - i + 1]);
          for (int i = n; i >= 0; i--) // 枚举指数
          {
              // 特判系数为0
              if (a[i] == 0) continue;
              // 输出正负号
              if (i == n) // 特判最高项
              {
                  if (a[i] > 0) // 正
                  {
                      // 不输出
                  }
                  if (a[i] < 0) // 负
                  {
                      printf("-");
                  }
              }
              else
              {
                  if (a[i] > 0) // 正
                  {
                      printf("+");
                  }
                  if (a[i] < 0) // 负
                  {
                      printf("-");
                  }
              }
              // 输出系数
              if (abs(a[i]) == 1) // 特判系数为1,注意是绝对值的
              {
                  // 不输出
                  if (i == 0) // 次数为0还是要输出
                  {
                      printf("1");
                  }
              }
              else
              {
                  printf("%d", abs(a[i]));
              }
              // 输出指数
              if (i == 0) // 特判指数为0
              {
                  // 不输出
              }
              else if (i == 1) // 特判指数为1
              {
                  printf("x");
              }
              else
              {
                  printf("x^%d", i);
              }
          }
          return 0;
      }
      
      • -5
        @ 2022-9-3 0:34:30

        题目5条规则下的纯字符串模拟,没啥逻辑上的思维难度

        • 1

        [普及][NOIP2009 普及组] 多项式输出

        信息

        ID
        1622
        时间
        1000ms
        内存
        256MiB
        难度
        4
        标签
        递交数
        138
        已通过
        63
        上传者