问题标题: 酷町堂:讨厌的枚举超时了,大佬帮我优化

0
0
已解决
李泽远
李泽远
高级天翼
高级天翼

五零六七,余数为一(好像还挺押韵)

https://newcourse.codingtang.com/#/problems/submitInfo?id=1145758

下面的程序结果是对的,我把程序运行结果直接输出提交是100分,只是程序超时了。

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int a[10];
void f(int x){
    if(x<=9){
        a[x]++;
        return;
    }
    if(x<=987){
        a[x/100]++;
        a[x/10%10]++;
        a[x%10]++;
        return;
    }
    a[x/1000]++;
    a[x/100%10]++;
    a[x/10%10]++;
    a[x%10]++;
}
bool Judge(){
    for(int i=2;i<=9;i++)
        if(a[i]!=1)
            return 0;
    return 1;
}
void f2(int x){
    if(x<=9){
        a[x]++;
        return;
    }
    if(x<=987){
        a[x/100]++;
        a[x/10%10]++;
        a[x%10]++;
        return;
    }
}
int main(){
    for(int i=2345;i<=9876;i++)
        for(int j=2;j<=9;j++)
            for(int k=234;k<=987;k++){
                memset(a,0,sizeof(a));
                f(i);f(j);f(k);
                if(Judge()&&(i-1)%k==0&&(i-1)/j==k){
                    cout<<i<<" "<<j<<" "<<k<<endl;
                    f2(j);f2(k);
                    break;
                }
            }
    return 0;
}

 

李泽远在2020-05-15 20:07:10追加了内容

原来1756ms;

现在1684ms。

加油加油,争取到1024ms以下。

李泽远在2020-05-15 20:10:22追加了内容

现在1324ms!!!

李泽远在2020-05-15 20:43:04追加了内容

继续加油。


0
已采纳
被禁言 姜思远
姜思远
初级光能
初级光能
我不知道
Three minutes later
我知道(真香)
下边思路,我一开始也超了
#include <iostream>
#include <cstring>
using namespace std;
int count[10];
int main() {
    int x=0;
        for(int j从1到9){
            for(int k从100到999){
                int i=j*k+1;//你懂的
                count[?]++;
                count[?]++;
                count[?]++;
                count[?]++;
                count[?]++;
                count[?]++;
                count[?]++;
                count[?]++;
                if(??){
                    for(int u从2到9){
                        if(?){
                            x++;
                        }
                    }
                    if(?){
                        输出;
                    }
                }
                x=0;
                数组清零
            }
        }
    return 0;
}

0
赵逸凡
赵逸凡
初级启示者
初级启示者

我没有你的账号看不了纪录啊

0
黄子扬
黄子扬
初级天翼
初级天翼

这代码常数不超时就怪了,直接依此桶存下个位数加判断不香吗

黄子扬在2020-05-15 19:23:32追加了内容

f函数拆成三个,不要if

黄子扬在2020-05-15 19:23:38追加了内容

f函数拆成三个,不要if

黄子扬在2020-05-15 20:06:09追加了内容

再加个火车头不就行了。。。

黄子扬在2020-05-15 20:45:35追加了内容

吸口氧不就过了

黄子扬在2020-05-15 20:45:45追加了内容

吸口氧不就过了

我要回答