Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
41438 | 杨中琦 | 密码锁 | C++ | 通过 | 100 | 9 MS | 256 KB | 644 | 2022-06-12 07:05:38 |
#include<bits/stdc++.h> using namespace std; int i,x,ma=1000,xx[10],yy[10],ans[10]; int prime(int x) { if(x<2) return 0; for(i=2;i*i<=x;i++) if(x%i==0) return 0; return 1; } void check(int y) { int t=0,tot=0; memset(yy,0,sizeof(yy)); while(y) { yy[++t]=y%10; y/=10; } for(i=1;i<=5;i++) tot+=min(abs(yy[i]-xx[i]),abs(10+xx[i]-yy[i])); if(tot<ma) { ma=tot; for(i=1;i<=5;i++) ans[i]=yy[i]; } } int main() { int i,t=0; cin>>x; while(x) { xx[++t]=x%10; x/=10; } for(i=99999;i>=0;--i) { if(prime(i)==0) continue; check(i); } for(i=5;i>=1;i--) cout<<ans[i]; return 0; }