提交时间:2022-06-11 17:02:25
运行 ID: 41314
#include <bits/stdc++.h> using namespace std; int a[6],a2[6],q,b[9999],k=0; int check(int i){ if(i==1||i==2||i==0){ return 0; } for(int j=2;j<=i/j;j++){ if(i%j==0){ return 0; } } return 1; } int f2(int n,int m){ int ans1=0,ans2=0; int m1=m,n1=n; while(n!=m){ n++; if(n==10){ n=0; } ans1++; } while(n1!=m1){ n1--; if(n1==-1){ n1=9; } ans2++; } return min(ans1,ans2); } int f(int a[],int b1[]){ int sum=0; for(int i=1;i<=5;i++){ sum+=f2(a[i],b1[i]); } return sum; } int minshuzu(int st[],int l){ int minst=99999; for(int i=1;i<=l;i++){ minst=min(st[i],minst); } return minst; } int main(){ cin>>q; a2[1]=q/10000; a2[2]=q/1000%10; a2[3]=q/100%10; a2[4]=q/10%10; a2[5]=q%10; for(int i=99999;i>=1;i--){ if(check(i)){ a[1]=i/10000; a[2]=i/1000%10; a[3]=i/100%10; a[4]=i/10%10; a[5]=i%10; int sum=f(a2,a); k++; b[k]=sum; } } int l=k; int minb=minshuzu(b,l); for(int i=99999;i>=1;i--){ if(check(i)){ a[1]=i/10000; a[2]=i/1000%10; a[3]=i/100%10; a[4]=i/10%10; a[5]=i%10; int sum=f(a2,a); if(sum==minb){ for(int i=1;i<=5;i++){ cout<<a[i]; } return 0; } } } return 0; }