大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一元n次多项式可用如下的表达式表示:
创新互联公司主营泽库网站建设的网络公司,主营网站建设方案,成都App定制开发,泽库h5小程序设计搭建,泽库网站营销推广欢迎泽库等地区企业咨询f (x) = anxn+ an-1xn-1 + ... + a1x + a0,a0≠0
其中,aixi 称为i 次项,ai 称为i次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:
1. 多项式中自变量为x,从左到右按照次数递减顺序给出多项式。
2. 多项式中只包含系数不为0的项。
3. 如果多项式n次项系数为正,则多项式开头不出现“+”号,如果多项式 n 次项系数为负,则多项式以“-”号开头。
4. 对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于0 次的项,其系数的绝对值为1,则无需输出1)。如果x的指数大于1,则接下来紧跟的指数部分的形式为“x^b”,其中b为x的指数;如果x的指数为1,则接下来紧跟的指数部分形式为“x”;如果x的指数为0,则仅需输出系数即可。
5. 多项式中,多项式的开头、结尾不含多余的空格。
输入描述:第一行1个整数,n,表示一元多项式的次数。 第二行有n+1 个整数,其中第i 个整数表示第n-i+1 次项的系数,每两个整数之间用空格隔开。输出描述:
共1行,按题目所述格式输出多项式。题解:
一元n次多项式可用如下的表达式表示:
f (x) = anxn+ an-1xn-1 + ... + a1x + a0,a0≠0
首先分析题目,题目的意思很简单,就是给定几个数,然后按照要求进行输出就行了,这通常被称为模拟,即题目说什么,我们就模拟着去做什么。
先进行输入,因为题目给定的n的范围是[1,100],所以用int去存储值就行了
在这里有一个小点需要注意,因为题目的多项式输出其中x的次方是倒着输出的,考虑到下面的遍历循环是倒着来的,所以这里我们存储值的时候也应该要倒着存储值。
#includeusing namespace std;
int main()
{
int n,i;
int a[110];
scanf("%d",&n);
for (i=n;i>=0;i--){
scanf("%d",&a[i]);
return 0;
}
然后根据题目描述的格式进行输出,在这里有一个注意点,主要是关于0/1/-1的讨论问题,还有就是首项、x的一次方、尾项的问题。我在第一个模拟的时候,由于逻辑比较混乱写了一大堆if...else,那样导致的结果就是逻辑很乱、代码不简洁、容易出差错。
所以,我们需要先分析这几个问题的关键。
首先就是如果用单纯的if...else去输出的话,就会发现其非常的繁琐,因为要不断的讨论0/-1/1以及大于0,小于0的问题,所以在这里我决定依次输出符号、系数、x的次方,再对里面的某些特殊情况进行单独讨论
1、对所有元素进行遍历,如果系数为0的话,就什么都不用输出,并且跳过这一层循环。
2、首项元素单独进行判断,如果首项元素是负数,就输出一个负号,为正就什么都不输出。
3、如果不是首项元素,为正输出‘+’,为负输出‘-’
4、再进行下一层系数的判断,如果是1/-1就不需要输出其系数,否则就输出原值的绝对值
5、然后到x的次方的判断,项数为最后一项的话,即i=0的时候,就不需要输出x,不为最后一项的话,还需要再进行一次判断,如果是次方为1的话,就值输出一个x,如果不是,就输出x的i次方。
总的过程大概就是以上的步骤,现在根据这些步骤来编写代码,如下所示:
#includeusing namespace std;
int main()
{
int n,i;
int a[110];
scanf("%d",&n);
for (i=n;i>=0;i--){
scanf("%d",&a[i]);
}
for (i=n;i>=0;i--)
{
if (a[i]==0) continue;
if (i==n){
if (a[i]<0) cout<<'-';
}
else{
if (a[i]<0) cout<<'-';
else cout<<'+';
}
if ((a[i]==1 || a[i]==-1) && i!=0) ;
else cout<
Python版本如下:n = int(input())
# 输入几个值,通过迭代成整型
lst = list(map(int,input().split()))
# 设置次方数
count = len(lst)-1
# 进行遍历
for i in lst:
# 判断值是否为0
if i==0:
count-=1
continue
# 输出符号
if count==len(lst)-1:
if i<0:
print('-',end='')
else:
if i>0:
print('+',end='')
else:
print('-',end='')
# 输出系数
if ((i==1 or i==-1) and count!=0):
pass
else:
print(abs(i),end='')
# 输出x的次方
if count==0:
pass
else:
if count==1:
print('x',end='')
else:
print(f'x^{count}',end='')
# 次方数减1
count-=1
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧