70分求助!
查看原帖
70分求助!
540870
Yzmddsw楼主2021/11/21 09:42

3个TLE,求优化

#include<iostream>

using namespace std;
bool yam(int x)
{
    while(x!=0)
    {
        if(x%10==7)
        {
            return 1;
        }
        x=x/10;
    }
    return 0;
}

int k[10000005];
int main()
{
k[1]=1;
k[2]=2;
k[3]=3;
k[4]=4;
k[5]=5;
k[6]=6;
long long a,b[10000005];
    for(int i=7;i<10000005;i+=1)
    {
        if(i%7==0)
        i++;
        if(yam(i)==0&&k[i]!=-1)
        {
        k[i]=i;
        }
        if(k[i]==0)
        {
        for(int j=1;j*i<10000005;j++)
        {
        k[j*i]=-1;
        }
        }
    }
    cin>>a;
    for(int i=0;i<a;i++)
    {
    cin>>b[i];

    if(k[b[i]]==0||k[b[i]]==-1)
    cout<<-1<<endl;
    else if(yam(b[i])==0){
    b[i]=b[i]+1;
    for(;k[b[i]]!=b[i];b[i]++);   
    cout<<b[i]<<endl;
    }

    }


    return 0;
}
2021/11/21 09:42
加载中...