问题标题: 酷町堂:请问我哪里错了

0
0
已解决
曲天歌
曲天歌
高级光能
高级光能

 

#include<iostream>
#include<cstring>
using namespace std;
int a[]={0,2,3,4,5,6,7,8,9};
int b[100];
bool Judge(){
	for(int i=1;i<=8;i++) 
		if(b[a[i]]!=1) 
			return false;
	return true;
}
int main(){
	for(int i=1;i<=8;i++){ 
		for(int j=1;j<=8;j++){
			int t=a[i]/a[j];
			if(a[i]%t!=1)
				continue;
				memset(b,0,sizeof(b));
				b[a[i]]++,b[a[j]]++;
				b[t]++;
				if(Judge())
					cout<<a[i]<<" "<<a[j]<<" "<<t<<endl;
		}
	}
	return 0;
}

为什么不输出?

曲天歌在2021-05-18 19:53:59追加了内容

不输出

曲天歌在2021-05-18 19:54:06追加了内容

不输出

曲天歌在2021-05-18 19:54:12追加了内容

不输出


0
0
0
0
0
张恩泽
张恩泽
高级天翼
高级天翼

这题可以枚举

可是我这么正经的人怎么可能枚举?

好吧,枚举就超时了,但我花了30酷町币发现答案是对的,所以:

2584 7 369

4852 7 693

5923 7 846

7435 9 826

嘿嘿,聪明的你应该知道上面的是什么

0
0
李显晨
李显晨
中级启示者
中级启示者

枚举核心:

for(int i=2345;i<=9876;i++){
        for(int j=2;j<=9;j++){
            int k=i/j;
            a[i/1000]++;
            a[i/100%10]++;
            a[i/10%10]++;
            a[i%10]++;
            a[j]++;
            a[k/100%10]++;
            a[k/10%10]++;
            a[k%10]++;
            bool flag=1;
            if(k>=1000||i%j!=1) flag=0;
            for(int l=2;l<=9;l++){
                if(a[l]!=1) flag=0;
            }
            if(flag) cout<<i<<" "<<j<<" "<<k<<endl;
            memset(a,0,sizeof(a));
        }
    }

望采纳

我要回答