华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1297|回复: 3
打印 上一主题 下一主题

P1067 多项式的输出

[复制链接]

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
跳转到指定楼层
楼主
发表于 2018-7-10 14:50:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.luogu.org/problemnew/show/P1067

题目描述:一元 n 次多项式可用如下的表达式表示:

其中, ai​,xi​ 称为 i 次项, ai​ 称为 i 次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:
多项式中自变量为 x ,从左到右按照次数递减顺序给出多项式。
多项式中只包含系数不为 0 的项。
如果多项式 n 次项系数为正,则多项式开头不出现“ + ”号,如果多项式 n 次项系数为负,则多项式以“ - ”号开头。
对于不是最高次的项,以“ + ”号或者“ − ”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于 0 次的项,其系数的绝对值为 1 ,则无需输出 1 )。
如果 x 的指数大于 1,则接下来紧跟的指数部分的形x^b,其中 b 为 x 的指数;如果 x 的指数为1 ,则接下来紧跟的指数部分形式为“ x ”;如果 x 的指数为 0 ,则仅需输出系数即可。
多项式中,多项式的开头、结尾不含多余的空格。

输入输出格式

输入格式:

输入共有 2 行
第一行 1 个整数, n ,表示一元多项式的次数。
第二行有 n+1个整数,其中第 i 个整数表示第 n−i+1 次项的系数,每两个整数之间用空格隔开。

输出格式:

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

使用道具 举报

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
沙发
 楼主| 发表于 2018-7-10 14:53:12 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. int n,a,i;
  4. int main()
  5. {
  6.     cin>>n;
  7.     cin>>a;
  8.     if(a!=1 && a!=-1)
  9.         cout<<a<<"x^"<<n;
  10.     else if(a==-1)
  11.         cout<<"-x^"<<n;
  12.     else
  13.         cout<<"x^"<<n;
  14.     for(i=1; i<n; i++)
  15.     {
  16.         cin>>a;
  17.         if(a!=0)
  18.         {
  19.             if(n-i!=1)
  20.             {
  21.                 if(a>0)
  22.                     cout<<"+";
  23.                 if(a!=1 &&a!=-1)
  24.                     cout<<a<<"x^"<<n-i;
  25.                 else if(a==-1)
  26.                     cout<<"-x^"<<n-i;
  27.                 else
  28.                     cout<<"x^"<<n-i;
  29.             }
  30.             else
  31.             {
  32.                 if(a>0)
  33.                     cout<<"+";
  34.                 if(a!=1 &&a!=-1)
  35.                     cout<<a<<"x";
  36.                 else if(a==-1)
  37.                     cout<<"-x";
  38.                 else
  39.                     cout<<"x";
  40.             }
  41.         }

  42.     }
  43.     cin>>a;
  44.     if(a!=0)
  45.     {
  46.         if(a>=0)
  47.             cout<<"+";
  48.         cout<<a;
  49.     }
  50. }
复制代码
回复 支持 反对

使用道具 举报

9

主题

158

帖子

470

积分

华一学生

积分
470
QQ
板凳
发表于 2018-8-29 16:09:42 | 只看该作者
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int a,n;
  5. int main()
  6. {
  7.     cin>>n;
  8.     for(int i=n;i>=0;i--)
  9.     {
  10.         cin>>a;
  11.         if(a)
  12.         {
  13.             if(i!=n&&a>0)cout<<"+";
  14.             if(abs(a)>1||i==0)cout<<a;
  15.             if(a==-1&&i)cout<<"-";
  16.             if(i>1)cout<<"x^"<<i;
  17.             if(i==1)cout<<"x";
  18.         }
  19.     }
  20.     return 0;
  21. }
复制代码

回复 支持 反对

使用道具 举报

14

主题

106

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
地板
发表于 2018-9-2 00:09:49 | 只看该作者
模拟水题
  1. #include<iostream>
  2. using namespace std;
  3. int n,x;
  4. bool b;
  5. int main()
  6. {
  7.     cin>>n;cin>>x;
  8.     if(n==0) {cout<<x;return 0;}
  9.     else
  10.     {
  11.         if(x>=2) cout<<x;
  12.         else if(x==-1) cout<<"-";
  13.         else if(x<-1) cout<<x;
  14.         if(x!=0) {cout<<"x^"<<n;b=true;}
  15.     }
  16.     for(int i=n-1;i>0;i--)
  17.     {
  18.         cin>>x;
  19.         if(x>=2) cout<<"+"<<x;
  20.         else if(x==1) cout<<"+";
  21.         else if(x<=-2) cout<<x;
  22.         else if(x==-1) cout<<"-";
  23.         if(x!=0)
  24.         {
  25.             if(i!=1) cout<<"x^"<<i;
  26.             else cout<<"x";
  27.             b=true;
  28.         }
  29.     }
  30.     cin>>x;
  31.     if(x>=1) cout<<"+"<<x;
  32.     else if(x<=-1) cout<<x;
  33.     else if(!b) cout<<0;
  34.     return 0;
  35. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 06:39 , Processed in 0.105791 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表