首页 > 其他分享 >[NOIP2009 普及组] 多项式输出

[NOIP2009 普及组] 多项式输出

时间:2022-12-24 17:35:01浏览次数:44  
标签:输出 普及 系数 多项式 样例 NOIP2009 le 次项

[NOIP2009 普及组] 多项式输出

题目描述

一元 $n$ 次多项式可用如下的表达式表示:

$$f(x)=a_nxn+a_{n-1}x{n-1}+\cdots +a_1x+a_0,a_n\ne 0$$

其中,$a_ix^i$ 称为 $i$ 次项,$a_i$ 称为 $i$ 次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

  1. 多项式中自变量为 $x$,从左到右按照次数递减顺序给出多项式。

  2. 多项式中只包含系数不为 $0$ 的项。

  3. 如果多项式 $n$ 次项系数为正,则多项式开头不出 + 号,如果多项式 $n$ 次项系数为负,则多项式以 - 号开头。

  4. 对于不是最高次的项,以 + 号或者 - 号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于 $0$ 次的项,其系数的绝对值为 $1$,则无需输出 $1$)。如果 $x$ 的指数大于 $1$,则接下来紧跟的指数部分的形式为“$x^b$”,其中 $b$ 为 $x$ 的指数;如果 $x$ 的指数为 $1$,则接下来紧跟的指数部分形式为 $x$;如果 $x$ 的指数为 $0$,则仅需输出系数即可。

  5. 多项式中,多项式的开头、结尾不含多余的空格。

输入格式

输入共有 $2$ 行

第一行 $1$ 个整数,$n$,表示一元多项式的次数。

第二行有 $n+1$ 个整数,其中第 $i$ 个整数表示第 $n-i+1$ 次项的系数,每两个整数之间用空格隔开。

输出格式

输出共 $1$ 行,按题目所述格式输出多项式。

样例 #1

样例输入 #1
5 
100 -1 1 -3 0 10
样例输出 #1
100x^5-x^4+x^3-3x^2+10

样例 #2

样例输入 #2
3 
-50 0 0 1
样例输出 #2
-50x^3+1

提示

NOIP 2009 普及组 第一题

对于100%数据,$0 \le n \le 100$,$-100 \le $系数$ \le 100$


$\text{upd 2022.8.1}$:新增加一组 Hack 数据。

思路

纯模拟

代码

#include<bits/stdc++.h>

using namespace std;

int n;

//系数
int a;

//第一个标识
bool first=false;

void doit()
{
    cin>>n;


    for(int i=n;i>=1;i--)
    {
        cin>>a;

        if(i==1)
        {
            if(a!=0&&first!=false)
            {
                if(a<0)
                {

                    if(a!=-1)
                        cout<<a<<"x";

                    else
                        cout<<"-x";
                }

                if(a>0)
                {

                    if(a!=1)
                        cout<<"+"<<a<<"x";
                    else
                        cout<<"+x";
                }
            }


            else if(a!=0&&first==false)
            {
                if(a<0)
                {
                    if(a!=-1)
                        cout<<a<<"x";

                    else
                        cout<<"-x";
                }

                if(a>0)
                {
                    if(a!=1)
                        cout<<a<<"x";
                    else
                        cout<<"x";
                }

                first=true;
            }

            else if(a==0)
            {
                continue;
            }
        }

        else
        {
            if(a!=0&&first!=false)
            {
                if(a<0)
                {

                    if(a!=-1)
                        cout<<a<<"x^"<<i;

                    else
                        cout<<"-x^"<<i;
                }

                if(a>0)
                {

                    if(a!=1)
                        cout<<"+"<<a<<"x^"<<i;
                    else
                        cout<<"+x^"<<i;
                }
            }


            else if(a!=0&&first==false)
            {
                if(a<0)
                {
                    if(a!=-1)
                        cout<<a<<"x^"<<i;

                    else
                        cout<<"-x^"<<i;
                }

                if(a>0)
                {
                    if(a!=1)
                        cout<<a<<"x^"<<i;
                    else
                        cout<<"x^"<<i;
                }

                first=true;
            }

            else if(a==0)
            {
                continue;
            }
        }

    }

    cin>>a;

    if(first!=false)
    {
        if(a<0)
        {
            cout<<a;
        }

        if(a>0)
        {
            cout<<"+"<<a;
        }

        if(a==0)
        {
            ;
        }
    }

    else
    {
        if(a<0)
        {
            cout<<a;
        }

        if(a>0)
        {
            cout<<a;
        }

        if(a==0)
        {
            ;
        }
    }

}

int main()
{
    doit();

    return 0;
}

标签:输出,普及,系数,多项式,样例,NOIP2009,le,次项
From: https://www.cnblogs.com/YzaCsp/p/17003069.html

相关文章

  • 省选07. 多项式
    P3338[ZJOI2014]力\[\begin{aligned}E_i&=\sum_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum_{j=i+1}^n\frac{q_j}{(i-j)^2}\end{aligned}\]设\(f(x)=q_x\),\(g(x)=x^2\),\(h(......
  • luoguP5383 普通多项式转下降幂多项式 题解
    学习了bztMinamoto大佬的做法,希望这篇题解可以使得那个方法更加易于理解。既然下降幂多项式转普通多项式可以采取分治\(\operatorname{NTT}\),那么可以猜测逆过来也可以......
  • AcWing341. 洛谷P1073, NOIP2009 最优贸易
    AcWing题目传送门洛谷题目传送门题目大意\(~~~~~~\)一个投机倒把的奸商想要通过城市不太健全的贸易系统坑点钱,任意城市都可以买入或者卖出水晶球,他想尽量在便宜的城市买......
  • 【顺序结构】计算多项式的值
    前言在上一次发布【顺序结构】甲流疫情死亡率后,今天我们继续来感受一下【顺序结构】计算多项式的值的做法。正文题目描述:对于多项式f(x)=ax3+bx2+cx+d和给定的x,a,b,......
  • 下标模意义下的多项式乘法及其应用
    已知两个数组\(a,b\),求一个数组\(c\),满足\(c_i=\sum_{j+k\equivi(MOD\K)}a_jb_k(MOD\M)\)。这里我们把这个东西称为下标模意义下的多项式乘法。那么这个东西怎么做呢?先......
  • GO语言基础 为什么我要学习Golang以及GO语言入门普及
    作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进......
  • CodeStar2022年秋第10周周赛普及进阶组
    T1:子序列相似度本题难度中等,做法和编辑距离类似,用dp[i][j]表示\(s\)的长为\(i\)的前缀和\(t\)的长为\(j\)的前缀的最大相似度初值:\(dp[0][0]=0\)转移:\(d......
  • 尝试把多项式板子分段喂给 ChatGPT 辨认
    #include<bits/stdc++.h>#defineendl'\n'#definerep(i,a,b)for(inti=(a);i<=(b);++i)#defineRep(i,a,b)for(inti=(a);i>=(b);--i)usingnamespacestd;const......
  • 【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数
    最近我们被客户要求撰写关于非线性模型的研究报告,包括一些图形和统计输出。在这文中,我将介绍非线性回归的基础知识。非线性回归是一种对因变量和一组自变量之间的非线性关系......
  • CodeStar2022年秋第9周周赛普及奠基组
    T1:k的幂分拆本题难度中等,完全背包模板题,以\(k\)的幂作为物品大小记dp[i][j]表示使用若干个\(k^0\simk^i\),相加恰好为\(j\)的方案数转移:\(dp[i][j]=dp[i-......