Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
19595 | 桑迪 | 密码锁 | C++ | 通过 | 100 | 10 MS | 260 KB | 639 | 2021-05-16 21:31:14 |
#include<bits/stdc++.h> using namespace std; int x,ma=1000; int xx[10],yy[10],ans[10]; int prime(int x){ int i; 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,i,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; }