这个思路能A掉这个题吗
查看原帖
这个思路能A掉这个题吗
702449
feng_nuoyiman楼主2022/8/3 15:43

我这个题试了好久最后一个点一直A不了,优化了好久,最快的一次这个题总共用了3.44s,但最后一个还是不行……

这是测评记录

下面是最后一次交的代码,大佬们帮帮看看

#include<iostream>
#include<cmath>
using namespace std;
bool zhishu(long long m){
	double a=sqrt(m);
	for(int i=2;i<=a;i++){
		if(m%i==0) return false;
	}
	return true;
}
bool f(long long m){
	int n,sum=0;
	while(m>0){
		n=m%10;
		sum+=n;
		m=m/10;
	}
	if(zhishu(sum)==0) return false;
	if(zhishu(sum)==1) return true;
}
int n;
long long l[105],r[105],minn=100000005,maxn=0;
long long ans=0;
bool judge[100000005];
long long cnt=1,x[10000005];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>l[i]>>r[i];
		minn=min(l[i],minn);
		maxn=max(r[i],maxn);
	}
	if(minn=1) minn=2;
	if(maxn==100000000) maxn=99999989;
	for(int i=minn;i<=maxn;i++){
		if(judge[i]==1) continue;
		for(int j=2;i*j<=maxn;j++){
			if(judge[i*j]==1) continue;
			judge[i*j]=1;
		}
		if(zhishu(i)==1&&f(i)==1){
			x[cnt]=i;
			cnt++;
		}
	}
	for(int i=1;i<=n;i++){
		ans=0;
		for(int j=1;j<cnt;j++){
			if(x[j]>=l[i]&&x[j]<=r[i]) ans++;
		}
		cout<<ans<<endl;
	}
	return 0; 
}
2022/8/3 15:43
加载中...