题目链接:
这是一个纯模拟的小怪但是需要注意一些小细节:
1.首项为正没有+号。
2.所有项系数如果是一的话就省略不写。
3.末项没有X^0而是1。
4.倒数第二项直接是X而不是X^1。
AC代码如下:
#include#include #include #include #include using namespace std;int A[200];bool sign;int main(){ int n; scanf("%d",&n); int t=n+1; for(int i=1;i<=t;i++) { scanf("%d",&A[i]); } /*for(int i=1;i<=t;i++) { printf("%d ",A[i]); }*/ if(A[1]==1) { printf("x^%d",n),n--; } else if(A[1]==-1) { printf("-x^%d",n),n--; } else if(A[1]==0) n--; else { printf("%dx^%d",A[1],n); n--; } for(int i=2;i<=t-1;i++) { if(i==t-1) { if(A[t-1]==1) { printf("+x"),n--; sign=1; } else if(A[t-1]==-1) { printf("-x"),n--; sign=1; } else if(A[t-1]==0) { n--; sign=1; } else { if(A[t-1]>0)printf("+%dx",A[t-1]); else printf("%dx",A[t-1]); n--; sign=1; } } if(A[i]>0&&sign==0) { if(A[i]==1) { printf("+x^%d",n),n--; } else { printf("+%dx^%d",A[i],n); n--; } } if(A[i]<0&&sign==0) { if(A[i]==-1) { printf("-x^%d",n),n--; } else { printf("%dx^%d",A[i],n); n--; } } if(A[i]==0&&sign==0) { n--; } if(n==0) { if(A[t]>0) { printf("+%d",A[t]); } if(A[t]<0) { printf("%d",A[t]); } if(A[t]==1) break; } } return 0;}