hpu--1703

这题的题目叫‘此题乃神题,劝你别做’,果真神题,细节太多了,大哭

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;
}


 

 

你可能感兴趣的:(hpu--1703)