牵风 发表于 2021-11-21 17:52:01

这题怎么写(我用暴力算法写出来的)有没有啥简单的方法

加减乘除经常在一起共事,共事久了,难免会出现各种争执。一天,加减乘除又因为一个问题争论不休,因为谁也不能说服对方,自己就是最厉害的。
问题是这样的:给定2个非0整数,然后对这2个非0整数进行加法、或减法、或乘法、或整除运算,谁(即某种运算)得到的结果最大,谁就是独一无二的霸主。
输入
输入2个非零整数。
输出
输出运算结果最大的所有运算式。
如果运算结果最大的运算式有多个,每行输出一个运算式,且按照"加法、减法、乘法、除法"的优先顺序逐行输出。

傻眼貓咪 发表于 2021-11-21 18:29:43

只有相乘和相减才会变成最大值不是吗?

相乘 > 相加(适用于 2 个正整数或 2 个负整数)
相减 > 相除(适用于 1 个正整数以及 1 个负整数)

代码:#include <stdio.h>

int main()
{
    int a, b;
    scanf("%d%d", &a, &b);
    if((a > 0 && b > 0) || (a < 0 && b < 0)){
      printf("%d 乘 %d 等于 %d 为最大值", a, b, a*b);
    }
    else{
      int x = a > b ? a : b;
      int y = a < b ? a : b;
      printf("%d 减 (%d) 等于 %d 为最大值", x, y, x-y);
    }
    return 0;
}

牵风 发表于 2021-11-21 19:31:47

傻眼貓咪 发表于 2021-11-21 18:29
只有相乘和相减才会变成最大值不是吗?

相乘 > 相加(适用于 2 个正整数或 2 个负整数)


主要还要这样
样例输入 Copy
2 2
样例输出 Copy
2+2=4
2*2=4

傻眼貓咪 发表于 2021-11-21 20:42:13

牵风 发表于 2021-11-21 19:31
主要还要这样
样例输入 Copy
2 2


#include <stdio.h>

int max(int a, int b){
    return a > b ? a : b;
}
int min(int a, int b){
    return a < b ? a : b;
}

int main()
{
    int a, b, res;
    scanf("%d%d", &a, &b);
    res = a+b;
    res = max(a, b) - min(a, b);
    res = a*b;
    if(!(max(a, b)%min(a, b))){
      res = max(a, b)/min(a, b);
      int temp = -32767;
      for(int i = 0; i < 4; i++) temp = max(temp, res);
      for(int i = 0; i < 4; i++){
            if(res == temp){
                switch(i){
                  case 0:
                        printf("%d + %d = %d\n", a, b, a+b);
                        break;
                  case 1:
                        printf("%d - %d = %d\n", max(a, b), min(a, b), max(a, b)-min(a, b));
                        break;
                  case 2:
                        printf("%d * %d = %d\n", a, b, a*b);
                        break;
                  case 3:
                        printf("%d / %d = %d\n", a, b, a/b);
                        break;
                }
            }
      }
    }
    else{
      int temp = -32767;
      for(int i = 0; i < 3; i++) temp = max(temp, res);
      for(int i = 0; i < 3; i++){
            if(res == temp){
                switch(i){
                  case 0:
                        printf("%d + %d = %d\n", a, b, a+b);
                        break;
                  case 1:
                        printf("%d - %d = %d\n", max(a, b), min(a, b), max(a, b)-min(a, b));
                        break;
                  case 2:
                        printf("%d * %d = %d\n", a, b, a*b);
                        break;
                }
            }
      }
    }
    return 0;
}

dyf3360266428 发表于 2021-11-28 19:59:53

#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    scanf("%d %d",&a,&b);
    c=a+b;
    d=a-b;
    e=a*b;
    f=a/b;
    if(c>=d&&c>=e&&c>=f){
    printf("%d+%d=%d\n",a,b,c);
}
    if(d>=c&&d>=e&&d>=f){
    printf("%d-%d=%d\n",a,b,d);
}
    if(e>=d&&e>=c&&e>=f){
    printf("%d*%d=%d\n",a,b,e);
}
    if(f>=d&&f>=e&&f>=c){
    printf("%d/%d=%d\n",a,b,f);
}
    return 0;
}
页: [1]
查看完整版本: 这题怎么写(我用暴力算法写出来的)有没有啥简单的方法