求助
查看原帖
求助
852112
O_v_O楼主2023/12/21 21:20
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[6],b[6];
int ans=INT_MAX,n;
string anss;
bool cheak(int s){
	if(s==1) return true;
	for(int i=2;i<s;i++) if(s%i==0) return true;
	return false;
}
void dfs(int k,int step){
	if(k==6){
		int sum=0;
		string s;
		for(int i=1;i<=5;i++){
			char c=b[i]+'0';
			s=s+c;
			sum=sum*10+b[i];
		}
		for(int i=s.size();i<5;i++) s='0'+s;
		if(cheak(sum)) return;
		if(step<ans){
			ans=step;
			anss=s;
		}else if(step==ans&&s>=anss) anss=s;
		return;
	}
	for(int i=1;i<=3;i++){
		if(i==1){
			b[k]=a[k];
			dfs(k+1,step);
			b[k]=0;
		}else if(i==2){
			if(a[k]==9) b[k]=0;
			else b[k]=a[k]+1;
			dfs(k+1,step+1);
			b[k]=0;
		}else{
			if(a[k]==0) b[k]=9;
			else b[k]=a[k]-1;
			dfs(k+1,step+1);
			b[k]=0;
		}
	}
}
signed main(){
	cin>>n;
	for(int i=5;i>=1;i--){
		a[i]=n%10;
		n/=10;
	}
	dfs(1,0);
	cout<<anss;
	return 0;
}
2023/12/21 21:20
加载中...