问题标题: 酷町堂:1247

0
0
已解决
董宇昊
董宇昊
初级启示者
初级启示者
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main() {
    int n;
    cin >> n;
    for (int i = n - 1; i >= 1; i--) {
        for (int j = n - 1; j >= 1; j--) {
            for (int k = n - 1; k >= 1; k--) {
                int a = i + j, b = j + k, c = i + k;
                if (a % 2 == 0 && b % 3 == 0 && c % 5 == 0) {
                    cout << a + b + c << ' ' << a << ' ' << b << ' ' << c << endl;
                    return 0;
                }
            }
        }
    }
    return 0;
}

1247   数字游戏

题目描述 Description

有三个数字a,b,c。已知0 <= a, b, c <= n,而且满足 a + b 是2的倍数,b + c 是3的倍数, a + c 是5的倍数。你的任务是找到一组a,b,c,使得a + b + c 的值最大。

输入描述 Input Description

一行,包含一个整数n (0 <= n <= 100)。

输出描述 Output Description

输出一行,4个整数,第一个数为 a + b + c 的最大值,之后三个数分别是组成a+b+c最大时的a, b, c的值。每两个数之间用一个空格隔开。

样例输入 Sample Input

 

3

样例输出 Sample Output

 

6 3 1 2


0
已采纳
被禁言 李秉轩
李秉轩
修练者
修练者
  • cin>>n;
  • for(int i=0;i<=n;i++){
  • for(int j=0;j<=n;j++){
  • for(int k=0;k<=n;k++){
  • if((i+j)%2==0&&(k+j)%3==0&&(i+k)%5==0&&i+j+k>max){
  • max=i+j+k;
  • a=i;
  • b=j;
  • c=k;
  • }
  • }
  • }
  • }
  • cout<<max<<' '<<a<<' '<<b<<' '<<c;
  • //核心代码仅供参考
0
吴庞茂旭
吴庞茂旭
资深光能
资深光能

哇!有人发完整代码!我都举报不过来了!

0
0
0
丁海洋
丁海洋
中级守护
中级守护

这题么~

0 <= a, b, c <= n枚举i,j,k时应该从0开始,n结束,你的循环的话应该都是 从n开始到0结束

然后a + b + c 的值最大,我觉得你应该没看见吧,这里是让我们求最大值的,所以你要将i,j,k加起来,用一个数存起来,再去与maxn比较,如果比maxn大,maxn就等于那个数 ,哦 ,i,j,k别忘了用数存哈!然后再输出就ok了

如还有问题评论即可

0
陈振轩
陈振轩
高级光能
高级光能
 if(n==2){
        cout<<"0 0 0 0";
        return 0;
    }

加上这一行代码试试?

陈振轩在2020-08-22 10:07:59追加了内容
if (((a + b) % 2 == 0 && (a + c) % 5 == 0 && (b + c) % 3 == 0) && (a + b + c) > maxx) {
                    tNum[1] = a;
                    tNum[2] = b;
                    tNum[3] = c;
                    maxx = a + b + c;
                }

注:for循环是0~n,0~n,0~n(分别是a,b,c)

我要回答