全TLE求助!大佬们有更高效的方法吗?

P1618 三连击(升级版)

AzureMist @ 2022-04-04 11:57:50

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c,x,y,z;
    int e=0;
    int sum=0;
    int n[9];
    cin>>a>>b>>c;
    for(n[0]=1;n[0]<=9;n[0]++)
        for(n[1]=1;n[1]<=9;n[1]++)
            for(n[2]=1;n[2]<=9;n[2]++)
                for(n[3]=1;n[3]<=9;n[3]++)
                    for(n[4]=1;n[4]<=9;n[4]++)
                        for(n[5]=1;n[5]<=9;n[5]++)
                            for(n[6]=1;n[6]<=9;n[6]++)
                                for(n[7]=1;n[7]<=9;n[7]++)
                                    for(n[8]=1;n[8]<=9;n[8]++)
                                    {
                                        x=100*n[0]+10*n[1]+n[2];
                                        y=100*n[3]+10*n[4]+n[5];
                                        z=100*n[6]+10*n[7]+n[8];
                                        for(int i=0;i<=8;i++)
                                            for(int j=i+1;j<=8;j++)
                                            {
                                                if(n[i]==n[j])
                                                    e=1;
                                            }
                                        if((x/y==a/b)&&(y/z==b/c)&&(e=0))
                                        {
                                            cout<<x<<" "<<y<<" "<<z<<endl;
                                            sum++;
                                        }   
                                    }
    if(sum==0)
        cout<<"No!!!";
    return 0;               
} 

by Ginger_he @ 2022-04-04 12:03:21

@Volcano_j666 枚举一个,算出其他两个,判断是否符合要求


by xfrvq @ 2022-04-04 12:03:31

你枚举九个数位会计算 10^9

可以只枚举第一个三位数,然后将其按 A:B:C 的比例放大,在判断放大后的两个三位数是否数位不重复


by AC_player @ 2022-06-06 19:43:26

1、枚举一个在333以内的数(含333),再用比例求出第2、3个数,如果2、3个数中有一个超出999,直接停。 2、用桶排序的思想,创一个0-9的桶,再查一遍 超过1直接continue

零如果有,直接continue


by AC_player @ 2022-06-06 19:45:08

@OneZzz6174 0要特判


|