Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<vector>
  4. using namespace std;
  5.  
  6. int getNum(int n){
  7. int cnt = 6;
  8. bool is_first = true;
  9. int divisor = 100000;
  10. int num = n;
  11. if (n == 0)
  12. return 1;
  13. while (1){
  14. if (num/divisor != 0)
  15. {
  16. if (is_first == true){
  17. is_first = false;
  18. }
  19. }
  20. if (is_first == true)
  21. cnt--;
  22. num %= divisor;
  23. divisor /= 10;
  24. if (divisor == 0)
  25. break;
  26. }
  27. return cnt;
  28. }
  29.  
  30. bool check(vector<int> wrong_btn,int n){
  31.  
  32. int divisor = 100000;
  33. int num = n;
  34. bool is_first = false;
  35. if (num == 0)
  36. {
  37. int temp = num/divisor;
  38. for (int i = 0; i < wrong_btn.size(); i++){
  39. if (temp == wrong_btn[i])
  40. return false;
  41. }
  42.  
  43. return true;
  44. }
  45. while (1){
  46. if (is_first == true || num/divisor != 0)
  47. {
  48. is_first = true;
  49. int temp = num/divisor;
  50. for (int i = 0; i < wrong_btn.size(); i++){
  51. if (temp == wrong_btn[i])
  52. return false;
  53. }
  54. }
  55.  
  56. num %= divisor;
  57. divisor /= 10;
  58. if (divisor == 0)
  59. break;
  60. }
  61. return true;
  62. }
  63.  
  64. int main(void)
  65. {
  66. int N;
  67. scanf("%d",&N);
  68. int M;
  69. scanf("%d",&M);
  70. vector<int> wrong_btn;
  71. for (int i = 0; i<M; i++){
  72. int temp;
  73. scanf("%d",&temp);
  74. wrong_btn.push_back(temp);
  75. }
  76.  
  77. int dist;
  78. int min = 10000000;
  79. int min_num;
  80. bool is_all = false;
  81.  
  82. for (int j = 0; j<=12345678;j++){
  83. if (check(wrong_btn, j) == false)
  84. continue;
  85. dist = abs(j-N);
  86.  
  87. if (dist < min)
  88. {
  89. min = dist;
  90. min_num = j;
  91. }
  92. is_all = true;
  93. }
  94.  
  95.  
  96. int subt = abs(N-min_num);
  97. int case1;
  98. if (is_all == false)
  99. case1 = 99999999;
  100. else
  101. case1 = getNum(min_num) + subt;
  102. int case2 = abs(N-100);
  103. if (case1 > case2)
  104. printf("%d",case2);
  105. else
  106. printf("%d",case1);
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement