如何处理10000000后的数据呢?
查看原帖
如何处理10000000后的数据呢?
306738
zuoqirun楼主2021/11/24 16:37

请问如何处理10000000后的数据呢?

#include<iostream>
#include<cstdio>
#include<cstring>
#define N 10050000
using namespace std;
bool a[N] = {};
bool isReal(int n){
	if(n % 7 == 0) return false;
	while(n != 0){
		if(n % 10 == 7) return false;
		n /= 10;
	}
	return true;
}
void init(){
	memset(a,1,sizeof(a));
	for(int i = 7;i < N - 1;i++){
		if(!isReal(i)){
			for(int j = 1;j < N / i;j++){
				a[i * j] = 0;
			}
		}
		
	}
}
int find(int n){
	for(int i = n + 1;i < N;i++){
		if(a[i] != 0) return i;	
	}
}
int main(){
	init();
	int t;
	cin >> t;
	for(int i = 0;i < t;i++){
		int x;
		cin >> x;
		if(a[x] == 0) cout << -1 << endl;
		else cout << find(x) << endl;
	}
	return 0;
}

已经试过将数组调大了,TLE

2021/11/24 16:37
加载中...