题意 把
f(x,y,z) = ax^2 + by^2 + cy^2 + dxy + eyz + fzx + gx + hy + iz + j
变成g(p,q,r,u,v,w,x,y,z) = ap + bq + cr + du + ev + fw + gx + hy + iz + j
#include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #include<set> #include<string> using namespace std; int numb[15]; int main() { int t; scanf("%d",&t); while(t--) { for(int i=0;i<10;i++) scanf("%d",&numb[i]); int j=0; while(numb[j]==0&&j<10) j++; if(j<=2) { if(numb[j]<0) { printf("-"); numb[j]*=-1; } if(numb[j]==1) printf("%c",'p'+j); else printf("%d%c",numb[j],'p'+j); } else if(j<9) { if(numb[j]<0) { printf("-"); numb[j]*=-1; } if(numb[j]==1) printf("%c",'r'+j); else printf("%d%c",numb[j],'r'+j); } else printf("%d",numb[j]); j++; for(;j<10;j++) if(numb[j]!=0) { if(j<=2) { if(numb[j]<0) { printf("-"); numb[j]*=-1; } else printf("+"); if(numb[j]==1) printf("%c",'p'+j); else printf("%d%c",numb[j],'p'+j); } else if(j<9) { if(numb[j]<0) { printf("-"); numb[j]*=-1; } else printf("+"); if(numb[j]==1) printf("%c",'r'+j); else printf("%d%c",numb[j],'r'+j); } else { if(numb[j]<0) printf("%d",numb[j]); else printf("+%d",numb[j]); } } printf(" "); } return 0; }
真的麻烦
坑点 第一个数之前 不用+
系数是1 -1