方程转换
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 231(57 users) Total Accepted: 50(45 users) Rating: Special Judge: No
Description
小A和小B是灰常好的盆友,小A总是能把小B难住,这次小B给小A出了一道期末必考题。
已知,f(x)=ax6+bx5+cx4+dx3+ex2+fx+g;现在我们要把方程替换成另外一种形式,f(m,n,p,i,j,k)=am+bn+cp+di+ej+fk+z;也就是,m=x6,n=x5,p=x4,i=x3,j=x2,k=x,z=g。
Input
有多组测试数据,第一行T(T<100),代表有T组测试数据,然后输入a,b,c,d,e,f,g的值,a,b,c,d,e,f,g均为小于10的9次方的整数。
Output
输出替换后的方程。
Sample Input
3
2 8 19 -6 72 13 100
36 0 4 0 8 17 3
0 0 0 0 0 0 0
Sample Output
2m+8n+19p-6i+72j+13k+100
36m+4p+8j+17k+3
0
下面是AC代码:
这个题的坑点挺多的。
下面是AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char c[6]={'m','n','p','i','j','k'};
int a[7];
int main()
{
int t;
while(~scanf("%d",&t))
while(t--)
{
for(int i=0;i<7;i++)
{
scanf("%d",&a[i]);
}
int flag=0;
for(int i=0;i<6;i++)
{
if(a[i]==0)
{
continue;
}
if(a[i]>0)
{
if(flag==0)
{
flag=1;
if(a[i]*c[i]==c[i])
{
printf("%c",c[i]);
}
else
{
printf("%d%c",a[i],c[i]);
}
}
else
{
printf("+");
if(a[i]==1)
{
printf("%c",c[i]);
}
else
{
printf("%d%c",a[i],c[i]);
}
}
}
else
{
if(flag==0)
{
flag=1;
if(a[i]*c[i]==-c[i])
{
printf("-%c",c[i]);
}
}
else
{
if(a[i]==-1)
{
printf("-%c",c[i]);
}
else
{
printf("%d%c",a[i],c[i]);
}
}
}
}
if(a[6]==0)
{
if(flag==0)
printf("0");
}
else if(a[6]>0)
{
if(flag==1)
{
printf("+%d",a[6]);
}
else
{
printf("%d",a[6]);
}
}
else
{
printf("%d",a[6]);
}
printf("\n");
}
return 0;
}