多项式输出 题解
2023-09-05 22:05:14
发布于:广东
15阅读
0回复
0点赞
分析
1.根据题意分别需要判断开头、中间的1和加、结尾
2.先一步输出开头,运行到结尾的前一个,再输出结尾
3.中间分别判断正负和1
#include<bits/stdc++.h>
using namespace std;
int a[105];
int main()
int n;
cin>>n;
for(int i=1;i<=n+1;i++)
{
cin>>a[i];
}
if(a[1]>0)
{
if(a[1]==1)cout<<"x^"<<n;
else cout<<a[1]<<"x^"<<n;
}
else if(a[1]<0)
{
if(a[1]==-1)cout<<"-x^"<<n;
else cout<<a[1]<<"x^"<<n;
}
int num=2;
for(int i=n-1;i>=1;i--)
{
if(i!=1)
{
if(a[num]>0)
{
if(a[num]==1)cout<<"+x^"<<i;
else cout<<"+"<<a[num]<<"x^"<<i;
}
else if(a[num]<0)
{
if(a[num]==-1)cout<<"-x^"<<i;
else cout<<a[num]<<"x^"<<i;
}
}
else
{
if(a[num]>0)
{
if(a[num]==1)cout<<"+x";
else cout<<"+"<<a[num]<<"x";
}
else if(a[num]<0)
{
if(a[num]==-1)cout<<"-x";
else cout<<a[num]<<"x";
}
}
num++;
}
if(a[n+1]>0)cout<<"+"<<a[n+1];
else if(a[n+1]<0)cout<<a[n+1];
return 0;
}
但是能拿一百分却不能通过
- 主要因为对于开头没有判断,而是直接输出
因此需要加入对开头的判断。如果n是0,输出最后一个,然后直接结束
AC代码
#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
int n;
cin>>n;
for(int i=1;i<=n+1;i++){
cin>>a[i];
}
if(n==0){
cout<<a[1];
return 0;
}
if(a[1]>0){
if(a[1]==1)cout<<"x^"<<n;
else cout<<a[1]<<"x^"<<n;
}
else if(a[1]<0){
if(a[1]==-1)cout<<"-x^"<<n;
else cout<<a[1]<<"x^"<<n;
}
int num=2;
for(int i=n-1;i>=1;i--){
if(i!=1){
if(a[num]>0){
if(a[num]==1)cout<<"+x^"<<i;
else cout<<"+"<<a[num]<<"x^"<<i;
}
else if(a[num]<0){
if(a[num]==-1)cout<<"-x^"<<i;
else cout<<a[num]<<"x^"<<i;
}
}
else{
if(a[num]>0){
if(a[num]==1)cout<<"+x";
else cout<<"+"<<a[num]<<"x";
}
else if(a[num]<0){
if(a[num]==-1)cout<<"-x";
else cout<<a[num]<<"x";
}
}
num++;
}
if(a[n+1]>0)cout<<"+"<<a[n+1];
else if(a[n+1]<0)cout<<a[n+1];
return 0;
}
这里空空如也
有帮助,赞一个