为什么???()
查看原帖
为什么???()
1122029
icebear233楼主2024/8/19 18:37

这样写就ac

#include<bits/stdc++.h>
using namespace std;
int n;
int a;
bool f[1002009]; 
int main(){
	cin>>a>>n;//ceil(sqrt(a*1.0))
	f[1]=1;
	for(int i=ceil(sqrt(a*1.0));i<=1001;i++){
		for(int j=1;i*i*j<=1002001;j++){
			f[i*i*j]=1;
		}
	}
	
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		if(f[x]&&x>=a){
			cout<<"lucky"<<"\n";
		}
		else{
			while(f[x]==0||x<a){
				x++;
			}
			cout<<x<<"\n";
		}	
	}
	return 0;
}

这样就不行???

#include<bits/stdc++.h>
using namespace std;
int n;
int a;
bool f[1002009]; 
int main(){
	cin>>a>>n;//ceil(sqrt(a*1.0))
	f[1]=1;
	for(int i=2;i<=1001;i++){
		for(int j=1;i*i*j<=1002001;j++){
			f[i*i*j]=1;
		}
	}
	
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		if(f[x]&&x>=a){
			cout<<"lucky"<<"\n";
		}
		else{
			while(f[x]==0||x<a){
				x++;
			}
			cout<<x<<"\n";
		}	
	}
	return 0;
}

(只是把ceil(sqrt(a1.0))改成2就10pts,不改就ac,如果在ceil(sqrt(a1.0))的情况下a==1的话所有数都是幸运数了,不符合题意啊???)

2024/8/19 18:37
加载中...