Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
41205 | 朱宸瑜 | 密码锁 | C++ | 通过 | 100 | 10 MS | 256 KB | 866 | 2022-06-11 15:11:25 |
#include<iostream> using namespace std; int kk,i,small=100000,ans; int k[5],snums[99999]; bool is_s(int num){ if(num==0||num==1) return 0; for(int i=2;i<=num/i;i++){ if(num%i==0) return 0; } return 1; } int abs(int num1,int num2){ int a=num1+10-num2; int b=num2+10-num1; int c=num1-num2; int d=num2-num1; if(c<0) c+=100; if(d<0) d+=100; return min(a,min(b,min(c,d))); } int main(){ cin>>kk; if(is_s(kk)){ cout<<kk; return 0; } while(kk>0){ k[i++]=kk%10; kk/=10; } for(int i=99999;i>0;i--){ int u=i,z=0,uu[5]; for(int p=0;p<5;p++){ uu[p]=0; } if(is_s(i)){ while(u>0){ uu[z++]=u%10; u/=10; } int sum; for(int j=0;j<5;j++){ sum+=(abs(uu[j],k[j])); } if(sum<small){ small=sum; ans=i; } sum=0; } } printf("%05d",ans); return 0; }