70分蒟蒻求助
查看原帖
70分蒟蒻求助
593538
TorchMar楼主2021/11/28 15:12

这个代码写了好久然后交上去后三个点TLE 可恶啊我的青春

#include<bits/stdc++.h>
using namespace std;
int t,x,b[200005],p[10000005],n[10000005];
bool a[10000005];
bool has(int x) {
	while(x!=0) {
		if(x%10==7) {
			return true;
		}
		x/=10;
	}
	return false;
}
int main() {
	int i,j;
	for(i=1;i<=10000000;i++){
        p[i]=i-1;
        n[i]=i+1;
    }
    for(i=1;i<=10000000;i++){
        if(a[i])continue;
        if(has(i)){
            for(int j=i;j<=10000000;j+=i){
                if(a[j])continue;
                n[p[j]]=n[j];
                p[n[j]]=p[j];
                a[j]=true;
            }
        }
    }
	cin>>t;
	for(i=1; i<=t; i++) {
		cin>>x;
		if(a[x]) cout<<-1<<endl;
		else {
			int awa=x+1;
			while(awa) {
				if(!a[awa]) {
					cout<<awa<<endl;
					break;
				}
				awa++;
			}
		}
	}
	return 0;
}

蒟蒻求助 求教除了这个的非暴力解法或者预处理方法 感谢(拜)

2021/11/28 15:12
加载中...