很懵逼,为啥sum中途会发生改变

P1618 三连击(升级版)

月离 @ 2019-09-06 17:43:29

#include<iostream>
using namespace std;
int b[10];
int sum;
int a,w,c,d,e,f,g,h,i,x,y,z;
int main(){
    int A,B,C;
    cin>>A>>B>>C;
    for(int o=123;o<=987;o++){
        x=o;
        y=B/A*x;
        z=C/A*x;
        a=x/100;
        w=(x/10)%10;
        c=x%10;
        d=y/100;
        e=(y/10)%10;
        f=y%10;
        g=z/100;
        h=(z/10)%10;
        i=z%10;
        b[a]=1;
        b[w]=1;
        b[c]=1;
        b[d]=1;
        b[e]=1;
        b[f]=1;
        b[g]=1;
        b[h]=1;
        b[i]=1;

        if(b[1]*b[2]*b[3]*b[4]*b[5]*b[6]*b[7]*b[8]*b[9]==1){
            sum++;
            cout<<x<<" "<<y<<" "<<z<<endl;  
        }
        x=0;
        y=0;
        z=0;
        b[a]=0;
        b[w]=0;
        b[c]=0;
        b[d]=0;
        b[e]=0;
        b[f]=0;
        b[g]=0;
        b[h]=0;
        b[i]=0;
    }
    if(sum==0)cout<<"No!!!";
    return 0;
}

完全涉及到我的盲区了;

真的很是mb;

数据

1 3 5

会输出正解后多一个No;

在o==219的时候,sum突然从1变成了0;

???????????(真是服了)


by MC方块人 @ 2019-09-06 18:45:26

@月离 你就把三连击的代码中的1:2:3换成a:b:c,再输入abc就可以了


by 月离 @ 2019-09-06 19:14:26

懂了,没用double

不够精确导致x,y,z发生了改变


by 帅到爆 @ 2019-09-20 18:48:56

其实SUM的问题很简单,只需要用一些条件


上一页 |