acm简单的问题一直wrong answer有一些三个整数构成的整数群,它的结构是:第一行整数N表示后面有N个几个整数群,每个整数群由三个整数组成.尝试用+、-、×、/(整除)来凑前两个数的计算结果
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 04:32:50
acm简单的问题一直wrong answer有一些三个整数构成的整数群,它的结构是:第一行整数N表示后面有N个几个整数群,每个整数群由三个整数组成.尝试用+、-、×、/(整除)来凑前两个数的计算结果
acm简单的问题一直wrong answer
有一些三个整数构成的整数群,它的结构是:第一行整数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
#include
#include
#include
using namespace std;
string convertToString(double x)
{
\x05ostringstream o;
\x05if(on;
\x05for(int j=0;j>a>>b>>c;
\x05
\x05\x05if(a+b==c)
\x05\x05{
\x05\x05\x05s=convertToString(a)+"+"+convertToString(b)+"="+convertToString(c);
\x05\x05\x05v.push_back(s);
\x05\x05\x05continue;
\x05\x05}
\x05\x05if(a-b==c||b-a==c)
\x05\x05{
s=convertToString(a>b?a:b)+"-"+convertToString(b>a?a:b)+"="+convertToString(c);
\x05\x05\x05v.push_back(s);
\x05\x05\x05continue;
\x05\x05}
if(a*b==c)
\x05\x05{
s=convertToString(a)+"*"+convertToString(b)+"="+convertToString(c);
\x05\x05\x05v.push_back(s);
\x05\x05\x05continue;
\x05\x05}
\x05\x05if(a/b==c||b/a==c)
\x05\x05{
s=convertToString(a>b?a:b)+"/"+convertToString(b>a?a:b)+"="+convertToString(c);
\x05\x05\x05v.push_back(s);
\x05\x05\x05continue;
\x05\x05}
\x05\x05else
\x05\x05\x05v.push_back("None");
\x05}
\x05for(int i=0;i
acm简单的问题一直wrong answer有一些三个整数构成的整数群,它的结构是:第一行整数N表示后面有N个几个整数群,每个整数群由三个整数组成.尝试用+、-、×、/(整除)来凑前两个数的计算结果
没考虑右边数是负数的情况,比如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输出一个结果即可.这样避免很多麻烦.