acm简单的问题一直wrong answer

有一些三个整数构成的整数群,它的结构是:第一行整数N表示后面有N个几个整数群,每个整数群由三个整数组成。尝试用+、-、×、/(整除)来凑前两个数的计算结果,以图与第三个整... 有一些三个整数构成的整数群,它的结构是:第一行整数N表示后面有N个几个整数群,每个整数群由三个整数组成。 尝试用+、-、×、/(整除)来凑前两个数的计算结果,以图与第三个整数相等。如果能凑到相等,则输出该表达式,否则,输出None。输入将保证若表达式存在,则一定唯一。

Sample Input:
5
123 1234 10
12 34 22
12 12 24
5678910 7 56789
9 4 2

Sample Output:
1234/123=10
34-12=22
12+12=24
None
9/4=2

程序如下
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
string convertToString(double x)
{
ostringstream o;
if(o<<x)
{
return o.str();
}
return "error";
}

int main(int argc,char *argv[])
{
int n,a,b,c;
string s,s1,s2;
vector<string> v;
cin>>n;
for(int j=0;j<n;j++)
{
cin>>a>>b>>c;

if(a+b==c)
{
s=convertToString(a)+"+"+convertToString(b)+"="+convertToString(c);
v.push_back(s);
continue;
}
if(a-b==c||b-a==c)
{
s=convertToString(a>b?a:b)+"-"+convertToString(b>a?a:b)+"="+convertToString(c);
v.push_back(s);
continue;
}
if(a*b==c)
{
s=convertToString(a)+"*"+convertToString(b)+"="+convertToString(c);
v.push_back(s);
continue;
}
if(a/b==c||b/a==c)
{
s=convertToString(a>b?a:b)+"/"+convertToString(b>a?a:b)+"="+convertToString(c);
v.push_back(s);
continue;
}
else
v.push_back("None");
}
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
return 0;
}
编译没有错,但一直wrong answer
展开
 我来答
百度网友07c6cf4cf
2014-03-03 · TA获得超过319个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:301万
展开全部
没考虑右边数是负数的情况,比如12-34=-22 -6/3=-2

解决方法就是if(a/b==c||b/a==c) 还有if(a-b==c||b-a==c) 不要写成这种或的形式 直接判断到底是a-b=c还是b-a=c,然后输出即可

另外不用把所有的结果存起来一起输出。得到一个结果就cout输出一个结果即可。这样避免很多麻烦。
匿名用户
2014-03-05
展开全部
你可以问问培优班的老师
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式