月离 @ 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 _FILARET_ @ 2019-09-06 17:54:50
orz
by MC方块人 @ 2019-09-06 18:12:57
@月离 你把你三连击的程序改一下不就完事了
by 月离 @ 2019-09-06 18:13:07
@deadpool123 dalaodalao帮我看看啊啊啊啊
by 月离 @ 2019-09-06 18:15:44
@MC方块人 所以呢,我还能怎么改
by typeryougishiki @ 2019-09-06 18:19:09
o==200时
z = 5/1*200 = 1000
g = 1000/100 = 10
于是b[g]越界了
by 月离 @ 2019-09-06 18:22:47
@typeryougishiki 感谢大佬
好像没有问题了
但还是不明白为什么b[g]的越界为什么会影响到sum
by typeryougishiki @ 2019-09-06 18:23:45
大概是因为b数组和sum在内存中是相邻的吧(趴)
by 月离 @ 2019-09-06 18:26:26
@typeryougishiki
服了,最后一个点还是wa,大佬能帮我下这个点的数据吗,今天到了上线了
by 月离 @ 2019-09-06 18:27:12
其实我再写一份代码说不定就A了
by _FILARET_ @ 2019-09-06 18:41:33
@月离 再写一份代码真实