这题的题目叫‘此题乃神题,劝你别做’,果真神题,细节太多了,。
1703: 此题乃神题,劝你别做
时间限制: 1 Sec 内存限制: 128 MB提交: 177 解决: 15
[ 提交][ 状态][ 讨论版]
题目描述
声明:这道题没有涉及任何算法!给定函数f = (1) + (2) * b + (3) * c + (4) * d + (5)。
输入
输入数据有多组, 每组数据有5个整数,分别对应函数f 中(1)、(2)、(3)、(4)、(5)。
输出
输出f的表达式,具体看给出的样例输出,不要有多余的符号。
样例输入
2 3 -3 4 -5 1 2 3 -4 5 2 0 2 2 2
样例输出
2+3b-3c+4d-5 1+2b+3c-4d+5 2+2c+2d+2
首先提供几组特殊的测试数据:
输入: 1 1 1 0 1
输出: 1+b+c+1
输入: 0 1111111111111 0 0 1
输出: 1111111111111b+1
输入:0 0 0 0 0
输出:0
输入:1 0 0 0 5
输出:1+5
思想:我用的二维数组与队列做的,实在是想不出其他办法了,有谁有简单的方法,请多多指教
代码如下:
#include<cstdio>
#include<cstring>
#include<queue>
#include<iostream>
using namespace std;
int main()
{
char a[6][1000];
int i,j;
while(scanf("%s%s%s%s%s",a[1],a[2],a[3],a[4],a[5])!=EOF)
{
queue<string>q;
for(i=1;i<=4;i++)
{
if(strcmp(a[i],"0")!=0)
break;
}
for(j=i;j<=4;j++)
{
if(a[j][0]=='0')
continue;
if(j!=i&&a[j][0]!='-')
q.push("+");
if(strcmp(a[j],"1")!=0&&strcmp(a[j],"-1")!=0||j==1)
{
q.push(a[j]);
}
else if(strcmp(a[j],"-1")==0)
q.push("-");
if(j==2)q.push("b");
else if(j==3)q.push("c");
else if(j==4)q.push("d");
}
if(!q.empty())
{
if(a[j][0]!='0')
{
if(a[j][0]!='-')
q.push("+");
q.push(a[j]);
}
while(!q.empty())
{
cout<<q.front();
q.pop();
}
}
else
{
printf("%s",a[5]);
}
printf("\n");
}
return 0;
}