比较坑的水题,首项前面的符号,-1,+1,只有数字项的时候要输出0。
感受一下这些数据
16
0 0 0 0 0 0 0 0 0 -1
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 0 0
-1 -1 -1 -41 -1 -1 -1 -1 -1 -1
-1 5 -2 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 -1 -1 -1 -1 -1
0 0 0 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 0 0
-1 -1 -1 -1 -1 0 0 0 0 0
1 1 1 1 1 1 1 1 1 0
0 46 3 4 -5 -22 -8 -32 24 27
2 31 -5 0 0 12 0 0 -49 12
#include<cstdio> #include<cstring> #include<cmath> char *bin = "pqruvwxyz"; typedef int ll; ll a[10]; int flag; void dfs(int d) { if(d == 9) { return; } if(a[d]){ if(std::abs(a[d]) == 1){ if(a[d]>0){ if(flag) printf("+"); printf("%c",bin[d]); } else printf("-%c",bin[d]); } else { if(a[d]>0){ if(flag) printf("+"); printf("%d%c",a[d],bin[d]); }else { printf("%d%c",a[d],bin[d]); } } flag = 1; } dfs(d+1); } int main() { int n; scanf("%d",&n); while(n--){ // memset(a,0,sizeof(a)); for(int i = 0; i < 10; i++) scanf("%d",a+i); flag = 0; dfs(0); if(!flag){ printf("%d",a[9]); } else { if(a[9]){ if(a[9]>0) printf("+%d",a[9]); else printf("%d",a[9]); } } printf(" "); } return 0; }