多项式输出 题解
2023-09-05 22:05:14
发布于:广东
27阅读
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;
}
这里空空如也

有帮助,赞一个