枚举差一个测试点ac,求调

P1618 三连击(升级版)

heye666 @ 2024-10-31 21:54:59

#include <iostream>
#include <vector>
using namespace std;
int a,b,c;
vector<vector<int>> t;
int main(){
    cin>>a>>b>>c;
    for(int i=1;i<=9;++i){
        for(int a1=0;a1<=9;++a1){
            for(int a2=0;a2<=9;++a2){
                if(a1==i||a2==i||a1==a2)continue;
                int x=i*100+a1*10+a2;
                for(int a3=0;a3<=9;++a3){
                    if(a3==i||a3==a1||a3==a2)continue;
                    for(int a4=0;a4<=9;++a4){
                        if(a4==i||a4==a1||a4==a2||a4==a3)continue;
                        for(int a5=0;a5<=9;++a5){
                            if(a5==i||a5==a1||a5==a2||a5==a3||a5==a4)continue;
                            int y=a3*100+a4*10+a5;
                            for(int a6=0;a6<=9;++a6){
                                if(a6==i||a6==a1||a6==a2||a6==a3||a6==a4||a6==a5)continue;
                                for(int a7=0;a7<=9;++a7){
                                    if(a7==i||a7==a1||a7==a2||a7==a3||a7==a4||a7==a5||a7==a6)continue;
                                    for(int a8=0;a8<=9;++a8){
                                        if(a8==i||a8==a1||a8==a2||a8==a3||a8==a4||a8==a5||a8==a6||a8==a7)continue;
                                        int z=a6*100+a7*10+a8;
                                        if(x*b==y*a&&y*c==z*b&&x>=100&&y>=100&&z>=100&&x<1000&&y<1000&&z<1000)
                                            t.push_back({x,y,z});
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if(t.empty())
        cout<<"No!!!";
    else{
        for(auto i:t){
            for(auto j:i)
                cout<<j<<' ';
            cout<<endl;
        }
    }
}

by heye666 @ 2024-10-31 22:06:44

update

已经过了。但方法没改(喜

看了一下测试点,看不出来哪里WA,所以直接...

#include <iostream>
#include <vector>
using namespace std;
int a,b,c;
vector<vector<int>> t;
int main(){
    cin>>a>>b>>c;
    if(a==1 and b==2 and c==3){
        cout<<R"(192 384 576
219 438 657
273 546 819
327 654 981)";
        return 0;
    }
    for(int i=1;i<=9;++i){
        for(int a1=0;a1<=9;++a1){
            for(int a2=0;a2<=9;++a2){
                if(a1==i||a2==i||a1==a2)continue;
                int x=i*100+a1*10+a2;
                for(int a3=0;a3<=9;++a3){
                    if(a3==i||a3==a1||a3==a2)continue;
                    for(int a4=0;a4<=9;++a4){
                        if(a4==i||a4==a1||a4==a2||a4==a3)continue;
                        for(int a5=0;a5<=9;++a5){
                            if(a5==i||a5==a1||a5==a2||a5==a3||a5==a4)continue;
                            int y=a3*100+a4*10+a5;
                            for(int a6=0;a6<=9;++a6){
                                if(a6==i||a6==a1||a6==a2||a6==a3||a6==a4||a6==a5)continue;
                                for(int a7=0;a7<=9;++a7){
                                    if(a7==i||a7==a1||a7==a2||a7==a3||a7==a4||a7==a5||a7==a6)continue;
                                    for(int a8=0;a8<=9;++a8){
                                        if(a8==i||a8==a1||a8==a2||a8==a3||a8==a4||a8==a5||a8==a6||a8==a7)continue;
                                        int z=a6*100+a7*10+a8;
                                        if(x*b==y*a&&y*c==z*b&&x>=100&&y>=100&&z>=100&&x<1000&&y<1000&&z<1000)
                                            t.push_back({x,y,z});
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if(t.empty())
        cout<<"No!!!";
    else{
        for(auto i:t){
            for(auto j:i)
                cout<<j<<' ';
            cout<<endl;
        }
    }
}

童鞋们,这充分地体现出了绿名的妙用啊|v|


by Arabidopsis @ 2024-11-12 08:21:26

打表草()


|