Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<iostream>
- #include<vector>
- using namespace std;
- int getNum(int n){
- int cnt = 6;
- bool is_first = true;
- int divisor = 100000;
- int num = n;
- if (n == 0)
- return 1;
- while (1){
- if (num/divisor != 0)
- {
- if (is_first == true){
- is_first = false;
- }
- }
- if (is_first == true)
- cnt--;
- num %= divisor;
- divisor /= 10;
- if (divisor == 0)
- break;
- }
- return cnt;
- }
- bool check(vector<int> wrong_btn,int n){
- int divisor = 100000;
- int num = n;
- bool is_first = false;
- if (num == 0)
- {
- int temp = num/divisor;
- for (int i = 0; i < wrong_btn.size(); i++){
- if (temp == wrong_btn[i])
- return false;
- }
- return true;
- }
- while (1){
- if (is_first == true || num/divisor != 0)
- {
- is_first = true;
- int temp = num/divisor;
- for (int i = 0; i < wrong_btn.size(); i++){
- if (temp == wrong_btn[i])
- return false;
- }
- }
- num %= divisor;
- divisor /= 10;
- if (divisor == 0)
- break;
- }
- return true;
- }
- int main(void)
- {
- int N;
- scanf("%d",&N);
- int M;
- scanf("%d",&M);
- vector<int> wrong_btn;
- for (int i = 0; i<M; i++){
- int temp;
- scanf("%d",&temp);
- wrong_btn.push_back(temp);
- }
- int dist;
- int min = 10000000;
- int min_num;
- bool is_all = false;
- for (int j = 0; j<=12345678;j++){
- if (check(wrong_btn, j) == false)
- continue;
- dist = abs(j-N);
- if (dist < min)
- {
- min = dist;
- min_num = j;
- }
- is_all = true;
- }
- int subt = abs(N-min_num);
- int case1;
- if (is_all == false)
- case1 = 99999999;
- else
- case1 = getNum(min_num) + subt;
- int case2 = abs(N-100);
- if (case1 > case2)
- printf("%d",case2);
- else
- printf("%d",case1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement