P1067 多项式输出
P1067 多项式输出 (坑题
题目描述见洛谷官网:https://www.luogu.org/problemnew/show/P1067
此题要非常注意细节!!!(坑
附上我的辣鸡代码
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstring> 5 #include<vector> 6 using namespace std; 7 8 int main() 9 { 10 11 int n,temp; 12 while(scanf("%d",&n)!=EOF){ 13 vector<int> v; 14 int f=1; 15 for(int i=0;i<=n;i++){ 16 cin>>temp; 17 if(temp!=0) f=0; 18 v.push_back(temp); 19 } 20 int l=v.size(),st; 21 for(int i=0;i<l;i++){ 22 if(v[i]!=0) { 23 st=i; 24 break; 25 } 26 n--; 27 } 28 if(v[st]!=0&&v[st]!=1&&v[st]!=-1&&n>1) printf("%dx^%d",v[st],n); 29 else if(v[st]!=0&&v[st]!=1&&n==1&&v[st]!=-1) printf("%dx",v[st]); 30 else if(v[st]==1&&n>1) printf("x^%d",n); 31 else if(v[st]==1&&n==1) printf("x"); 32 else if(v[st]==-1&&n>1) printf("-x^%d",n); 33 else if(v[st]==-1&&n==1) printf("-x"); 34 n--; 35 for(int i=st+1;i<l-1;i++){ 36 if(n>1){ 37 if(v[i]!=-1&&v[i]!=1&&v[i]!=0&&v[i]>0) printf("+%dx^%d",v[i],n--); 38 else if(v[i]!=-1&&v[i]!=1&&v[i]!=0&&v[i]<0) printf("%dx^%d",v[i],n--); 39 else if(v[i]==1) printf("+x^%d",n--); 40 else if(v[i]==-1) printf("-x^%d",n--); 41 else if(v[i]==0) --n; 42 } 43 else { 44 if(v[i]!=-1&&v[i]!=1&&v[i]!=0&&v[i]>0) printf("+%dx",v[i]); 45 else if(v[i]!=-1&&v[i]!=1&&v[i]!=0&&v[i]<0) printf("%dx",v[i]); 46 else if(v[i]==1) printf("+x"); 47 else if(v[i]==-1) printf("-x"); 48 else if(v[i]==0) --n; 49 } 50 } 51 if(v[l-1]>0) printf("+%d\n",v[l-1]); 52 else if(v[l-1]<0) printf("%d\n",v[l-1]); 53 else if(f) printf("0\n"); 54 else printf("\n"); 55 } 56 57 return 0; 58 }
下面是几组容易出错的数据(n==2)
2 2 2
-2 2 2
2 -2 2
2 2 -2
-2 -2 2
2 -2 -2
-2 2 -2
-2 -2 -20 0 0
-1 0 0
0 -1 0
0 0 -1
1 0 0
0 1 0
0 0 1
2 0 0
0 2 0
0 0 2
-2 0 0
0 -2 0
0 0 -2
这些数据都过了的话,应该就能AC。