洛谷p1067

题目https://www.luogu.org/problemnew/show/P1067

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<cmath>
  4 using namespace std;
  5 typedef long long ll;
  6 int main()
  7 {
  8     int n;
  9     int a[1010];
 10     int f=0;
 11     scanf("%d",&n);
 12     if(n==0)
 13     {
 14         int m;
 15         cin>>m;
 16         printf("%d\n",m);
 17     }
 18     else
 19     {
 20         for(int i=0;i<=n;i++)
 21         {
 22             cin>>a[i];
 23         }
 24         int c=n;
 25         for(int i=0;i<n-1;i++)
 26         {
 27             if(a[i]==0)
 28             {
 29                 c--;
 30                 continue;
 31             }
 32             else if(a[i]>0&&f==0)
 33             {
 34                 if(a[i]==1)
 35                 {
 36                     printf("x^%d",c);
 37                     c--;
 38                     f=1;
 39                 }
 40                 else
 41                 {
 42                     printf("%dx^%d",a[i],c);
 43                     c--;
 44                     f=1;
 45                 }
 46             }
 47             else if(a[i]<0&&f==0)
 48             {
 49                 if(a[i]==-1)
 50                 {
 51                     printf("-x^%d",c);
 52                     c--;
 53                     f=1;
 54                 }
 55                 else
 56                 {
 57                     printf("%dx^%d",a[i],c);
 58                     c--;
 59                     f=1;
 60                 }
 61             }
 62             else if(a[i]>0&&f==1)
 63             {
 64                 if(a[i]==1)
 65                 {
 66                     printf("+x^%d",c);
 67                     c--;
 68                 }
 69                 if(a[i]!=1)
 70                 {
 71                     printf("+%dx^%d",a[i],c);
 72                     c--;
 73                 }
 74             }
 75             else if(a[i]<0&&f==1)
 76             {
 77                 if(a[i]==-1)
 78                 {
 79                     printf("-x^%d",c);
 80                     c--;
 81                 } 
 82                 else
 83                 {
 84                     printf("%dx^%d",a[i],c);
 85                     c--;    
 86                 }
 87             }
 88         }
 89         if(a[n-1]!=0)
 90         {
 91             if(a[n-1]>0)
 92             {
 93                 if(a[n-1]==1)
 94                 {
 95                     printf("+x");
 96                 }
 97                 else
 98                 {
 99                     printf("+%dx",a[n-1]);
100                 }
101             }
102             if(a[n-1]<0)
103             {
104                 if(a[n-1]==-1)
105                 {
106                     printf("-x");
107                 }
108                 else
109                 {
110                     printf("%dx",a[n-1]);
111                 }
112             }
113         }
114         if(a[n]!=0)
115         {
116             if(a[n]>0)
117             {
118                 printf("+%d\n",a[n]);
119             }
120             if(a[n]<0)
121             {
122                 printf("%d\n",a[n]);
123             }
124         }
125     }
126     if(f==0)
127     {
128         printf("0\n");
129     }
130     return 0;
131 }

其实还是自己太菜

大神代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n,a;
 5     cin>>n;
 6     for(int i=n;i>=0;i--){
 7         cin>>a;
 8         if(a){    判0系数
 9             if(i!=n&&a>0)cout<<"+";    根据正负、是否为最高此项决定加号
10             if(abs(a)>1||i==0)cout<<a;    输出系数(系数不为正负1或指数为0)
11             if(a==-1&&i)cout<<"-";    -1系数特判,常数项已特判
12             if(i>1)cout<<"x^"<<i;    二次及以上输出指数
13             if(i==1)cout<<"x";    一次项
14         }
15     }
16 }

 

posted @ 2019-04-29 21:00  Fzzf1  阅读(234)  评论(0编辑  收藏  举报