Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
19072 | 陈万瑄 | 密码锁 | C++ | 通过 | 100 | 5 MS | 332 KB | 980 | 2021-05-05 19:38:04 |
#include<bits/stdc++.h> using namespace std; int n,s[10000],ss[10000]={0,2,3,5,7},t=4,a,b,c,d,e; struct minn{ int num; int sum; }w; bool su(int x){ bool flag=true; for(int i=3;i*i<=x;i+=2){ if(x%i==0){ flag=false; break; } } return flag; } void input(){ int t1,t2[5]={0,1,3,7,9}; for(int i=1;i<=9999;i++){ for(int j=1;j<=4;j++){ t1=i*10+t2[j]; if(su(t1)){ ss[++t]=t1; } } } } int main(){ cin>>n; input(); for(int i=t;i>=1;i--){ a=min(abs(ss[i]%10-n%10),10-abs(ss[i]%10-n%10)); b=min(abs(ss[i]/10%10-n/10%10),10-abs(ss[i]/10%10-n/10%10)); c=min(abs(ss[i]/100%10-n/100%10),10-abs(ss[i]/100%10-n/100%10)); d=min(abs(ss[i]/1000%10-n/1000%10),10-abs(ss[i]/1000%10-n/1000%10)); e=min(abs(ss[i]/10000-n/10000),10-abs(ss[i]/10000-n/10000)); s[i]=a+b+c+d+e; if(i==t) w.num=ss[i],w.sum=s[i]; else if(s[i]<w.sum){ w.sum=s[i]; w.num=ss[i]; } } printf("%05d",w.num); return 0; }