Josif_tepe

Untitled

Mar 22nd, 2026
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. bool is_palindrome(int x) {
  7.     int tmp = x;
  8.     int rev_num = 0;
  9.    
  10.     while(tmp > 0) {
  11.         int digit = tmp % 10;
  12.         rev_num = (rev_num * 10) + digit;
  13.         tmp /= 10;
  14.     }
  15.    
  16.     return (x == rev_num);
  17. }
  18. int main()
  19. {
  20.     vector<int> pals;
  21.     for(int i = 2; i <= 99999; i++) {
  22.         if(is_palindrome(i)) {
  23.             pals.push_back(i);
  24.            
  25.         }
  26.     }
  27.    
  28.     int S, E;
  29.     cin >> S >> E;
  30.    
  31.     vector<bool> visited(100000, false);
  32.     visited[S] = true;
  33.    
  34.     queue<int> q;
  35.     q.push(S);
  36.     q.push(0);
  37.    
  38.     while(!q.empty()) {
  39.         int c = q.front(); q.pop();
  40.         int cnt = q.front(); q.pop();
  41.        
  42.         if(c == E) {
  43.             cout << cnt << endl;
  44.             return 0;
  45.         }
  46.        
  47.         for(int i = 0; i < (int) pals.size(); i++) {
  48.             if(pals[i] < c and pals[i] + c <= E and !visited[pals[i] + c]) {
  49.                 visited[pals[i] + c] = true;
  50.                 q.push(pals[i] + c);
  51.                 q.push(cnt + 1);
  52.             }
  53.            
  54.             if(pals[i] >= c) {
  55.                 break;
  56.             }
  57.         }
  58.     }
  59.     return 0;
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment