B3730 题解
dongrunxuan · · 题解
B3730 题解
前言
题解区没有的思路。
题意
给你一串五位密码,问哪个五位质数密码要扭最少次数才能扭到。
思路
遍历
代码
#include<iostream>
using namespace std;
int a[6],b[6],c[6],sum = 1e9;
bool isPrime(int n)//判断质数
{
if (n < 2)
{
return 0;
}
for (int i = 2; i <= n/i; i++)
{
if (n % i == 0)
{
return 0;
}
}
return true;
}
int main()
{
for (int i = 1; i <= 5; i++)
{
scanf("%1d", a + i);
}
for (int i = 0; i <= 99999; i++)//遍历
{
if (isPrime(i))//如果是质数
{
b[1] = i / 10000;
b[2] = i / 1000 % 10;
b[3] = i / 100 % 10;
b[4] = i / 10 % 10;
b[5] = i % 10;
int cnt = 0;
for (int j = 1; j <= 5; j++)
{
cnt += min((a[j] - b[j] + 10) % 10, (b[j] - a[j] + 10) % 10);
}//就算出要扭多少次才能扭到相应密码
if (cnt <= sum)
{
for (int j = 1; j <= 5; j++)
{
c[j] = b[j];
}
sum = cnt;//记录,取最小值
}
}
}
for (int i = 1; i <= 5; i++)
{
cout<<c[i];
}
return 0;
}
有问题私信我哦。