Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
41308 | 张志鹏 | 密码锁 | C++ | 通过 | 100 | 114 MS | 252 KB | 792 | 2022-06-11 16:57:26 |
#include<bits/stdc++.h> using namespace std; int a[6]; int n; int an[6]; int ans1=100000,ans2; int check(int x){ for(int i=2;i*i<=x;i++){ if(x%i==0) return 0; } return 1; } int main(){ cin>>n; an[5]=n%10; an[4]=(n%100-an[5])/10; an[3]=(n%1000-an[4]*10-an[5])/100; an[2]=(n%10000-an[3]*100-an[4]*10-an[5])/1000; an[1]=n/10000; for(int i=99999;i>=2;i--){ if(check(i)){ a[5]=i%10; a[4]=(i%100-a[5])/10; a[3]=(i%1000-a[4]*10-a[5])/100; a[2]=(i%10000-a[3]*100-a[4]*10-a[5])/1000; a[1]=i/10000; int t=0; for(int j=1;j<=5;j++){ if(a[j]>an[j]){ t=t+min(a[j]-an[j],an[j]+10-a[j]); }else t=t+min(an[j]-a[j],a[j]+10-an[j]); } if(t<ans1){ ans1=t,ans2=i; } } } printf("%.5d",ans2); return 0; }