其他分享
首页 > 其他分享> > 洛谷题解P1067 多项式输出

洛谷题解P1067 多项式输出

作者:互联网

原题传送门

Description

给定一个最高次为 \(n\) ,且形如 \(a_nx^n\ +\ a_{n-1}x^{n-1}\ +\ \cdots +\ a_1x_1\ +\ a_0 (a_n\neq 0)\) 的多项式的各项系数(即 \(a_n,a_{n-1},\cdots ,a_0\)),请写出此多项式。

这里写的规则可以归纳成以下几条 :

Solution

很显然的一道模拟题,不过有很多注意的点。

具体规则在 Description 中已经阐明,这里需特别强调

那我们可以把整个大问题分成 \(4\) 个子问题,以及由这 \(4\) 个子问题衍生而生的子问题 :

Code

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
inline void read(int &x){
	int f=1;
	char ch=getchar();
	x=0;
	while(ch<'0'||ch>'9'){
	    if(ch=='-') f=-1;
	    ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
	    x=(x<<3)+(x<<1)+(ch&15);
	    ch=getchar();
	}
	x*=f;
}
int n;
int a[101];
int main(){
	read(n);
	for(int i=n;i>=0;i--) read(a[i]);
	
	if(a[n]==1) printf("x^%d",n);
	else if(a[n]==-1) printf("-x^%d",n);
	else printf("%dx^%d",a[n],n);
	
	for(int i=n-1;i>=2;i--){
		if(a[i]==0) continue;
		if(a[i]==1){
			printf("+x^%d",i);
			continue;
		}
		if(a[i]==-1){
			printf("-x^%d",i);
			continue;
		}
		if(a[i]>0){
			printf("+%dx^%d",a[i],i);
			continue;
		}
		printf("%dx^%d",a[i],i);
	}
	
	if(a[1]==1) printf("+x");
	else if(a[1]==-1) printf("-x");
	else if(a[1]>0) printf("+%dx",a[1]);
	else if(a[1]!=0) printf("%dx",a[1]);
	
	if(a[0]>0) printf("+%d",a[0]);
	else if(a[0]<0) printf("%d",a[0]);
	return 0;
}

标签:输出,ch,洛谷,题解,1x,else,dx,printf,P1067
来源: https://www.cnblogs.com/-pwl/p/14012986.html