问题 5085 --密码锁(完善程序)

5085: 密码锁(完善程序)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 30  解决: 18
[提交][状态][命题人:]

题目描述

乌龟给自己的贵重物品上了密码锁。密码锁上有5个数字拨盘。每个数字拨盘每次向上

拨使数字增加1(9向上拨得到0),向下拨使数字减少1(0向下拨得到9)

拨盘上的数字组成一个5位数。只要拨盘上的数字变为素数,密码锁就会被解开。素数(又称质数)是只能被1和它自身整除的大于1的自然数。因为乌龟动作实在太慢,他希望你帮他计算如何开锁,使得拨动的总次数最少。


#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(______(1)________)return 0;
      return 1;
}
void check(int y)
{
     int t=0,i,tot=0;
     memset (yy,0,sizeof(yy));
     while(y){
         yy[++t]=_____(2)_______;
         y/=10;
     }
      for(i=1;i<=5;++i)
        tot+=min(_____(3)______,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;
      	_____(4)______;
    }
    for(i=99999;i>=0;--i){
        if (prime(i)==0)continue;
        ______(5)_______;
    }
   	for(i=5;i>=1;--i)cout<<ans[i];
    return 0;
}


输入

一个5位数,表示拨盘的初始数字

输出

一个5位素数,表示开启密码锁使用的素数(拨动次数最少)。如有多组解,输出满足条件的最大数
样例输入
Copy
01210
样例输出
Copy
01319

提示

只需输出每个选项的答案

一共五行,每行一个大写字母

来源

[提交][状态]