问题标题: 酷町堂:1247数字游戏10分郁闷啊!

0
0
已解决
被禁言 鲍纪元
鲍纪元
高级守护
高级守护

#include<iostream>
using namespace std;
int main()
{
    int a,b,c;
    int a1=0,b1=0,c1=0;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    if(a+b%2==0)
    {
    a1=a+b;
    }
    if(b+c%3==0)
    {
    b1=b+c;
    } 
    if(a+c%5==0)
    {
    c1=a+c;
    }
    }
    cout<<a1+b1-b<<" "<<a1-b<<" "<<b1-c<<" "<<c1-a;
    return 0;
}

鲍纪元在2018-01-31 21:17:09追加了内容

求大神指点!

代码!代码!代码!

我急呀!


0
已采纳
于子轩
于子轩
初级守护
初级守护
for(int a=0;a<=n;a++)
        for(int b=0;b<=n;b++)
            for(int c=0;c<=n;c++)
            {
                if((a+b)%2==0&&(b+c)%3==0&&(a+c)%5==0&&a+b+c>=max)
                {
                    max=a+b+c;
                    x=a;
                    y=b;
                    z=c;
                }   
            }

 

0
0
臧启亚
臧启亚
初级光能
初级光能

你只用一重循环考虑不到每一种情况,具体思路如下:

用一个三重循环,把a,b,c值的所有情况根据题目中的条件进行判断,若符合条件,记录每一次相加的值并互相比较。最后用max存下最大的值,三个其他变量存下a,b,c的值。

核心代码如下:

for(int a=0;a<=num;a++){
    for(int b=0;b<=num;b++){
        for(int c=0;c<=num;c++){
             if((a+b)%2==0&&(b+c)%3==0&&(a+c)%5==0&&a+b+c>max){
//(a+b)%2==0表示a与b的和为2的倍数,(b+c)%3==0表示b与c的和为3的倍数,(a+c)%5==0表示a与c的值为5的倍数
//a+b+c>max表示a与b与c的和大于之前满足条件的a,b,c的和
                    max=a+b+c;
                    a2=a;
                    b2=b;
                    c2=c;
//如果满足条件就用max存更大的值,a2,b2,c2分别存相加最大的a,b,c的值
                }   
            }
        }
    }

 

0
杨陈卓
杨陈卓
新手天翼
新手天翼

定a=0,b=0,c=0,n,sum=0

输入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)&&((j+k)%3==0)&&((i+k)%5==0)&&((i+j+k)>=sum)){

 

sum=i+j+k;

 

a=i;b=j;c=k;

 

}

 

}

 

cout<<sum<<" "<<a<<" "<<b<<" "<<c<<endl;

这是核心

我要回答