要哭了,只WA第一个点
查看原帖
要哭了,只WA第一个点
473904
Miracle516楼主2024/12/8 23:31
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,blood,ans,e;
bool isprime(int k){
    if(k==2||k==3||k==5)return true;
	if(k==0||k==1||k%2==0||k%3==0||k%5==0)return false;
	for(int i=6;i<=sqrt(k);i++){
		if(k%i==0)return false;
	}
	return true;
}
int main(){
	scanf("%d",&n);
	while(n--){
		ans=1e9;
		scanf("%d",&blood);
		if(isprime(blood)){
			printf("1\n");
			continue;
		}
		e=ceil(log(blood)/log(2));
		for(int i=1;i<=e;i++){
			if(isprime(blood-(int)pow(2,i)+1))ans=min(ans,i+1);
		}
		printf(ans==1e9?"-1\n":"%d\n",ans);
	}
	return 0;
}

2024/12/8 23:31
加载中...