如果你TLE#4#5
查看原帖
如果你TLE#4#5
1411354
xf20280111楼主2024/12/21 20:24

60分的模拟不是正解,正解可以用DFS和BFS,也可以对模拟算法做些优化

但是,我的做法是————打表

例如,有这样一段代码

#include<bits/stdc++.h>
using namespace std;
long long a[9];
long long pd1(long long n){
	if (n==1) return 1;
	if (n==2) return 10;
	if (n==3) return 100;
	if (n==4) return 1000;
	if (n==5) return 10000;
	if (n==6) return 100000;
	if (n==7) return 1000000;
	if (n==8) return 10000000;
}
long long pd2(long long n){
	if (n==1) return 9;
	if (n==2) return 99;
	if (n==3) return 999;
	if (n==4) return 9999;
	if (n==5) return 99999;
	if (n==6) return 999999;
	if (n==7) return 9999999;
	if (n==8) return 99999999;
}
bool zs(long long n){
	if(n==2) return true;
	if(n==1) return false;
	for (long long i=2;i*i<=n;i++){
		if (n%i==0) return false;
	}
	return true;
} 
bool zs1(long long n){
	long long k=1;
	while(n!=0){
		if (zs(n)==false) return false;
		n/=10;
	}
	return true;

	
}
int main()
{
	long long n;
	cin>>n;
	for (long long i=pd1(n);i<=pd2(n);i++){
		if (zs1(i)) cout<<i<<endl;
		
	}
	return 0;
}

他会TLE

看看数据范围? 1n81\le n \le 8

做法已经非常明显了,打表,加油吧

2024/12/21 20:24
加载中...