Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
74816 | 陶俊宸 | 密码锁 | C++ | 通过 | 100 | 2 MS | 328 KB | 582 | 2023-06-01 20:56:23 |
#include<cstdio> #include<math.h> #include<algorithm> using namespace std; bool st[100000]; int n,pn[10000],cnt,res,v,ans=0x3f3f3f3f,num; int dist(int a,int b){ res=0; for(int j=0;j<5;j++){ res+=min(abs(a%10-b%10),10-abs(a%10-b%10)); a/=10,b/=10; } return res; } int main(){ scanf("%d",&n); for(int i=2;i<100000;i++){ if(!st[i]){ pn[cnt++]=i; v=dist(n,i); if(v<=ans){ ans=v; num=i; } } for(int j=0;j<cnt&&i<=100000/pn[j];j++){ st[i*pn[j]]=true; if(!(i%pn[j])) break; } } printf("%05d",num); return 0; }