Advertisement
bartekltg

6174

Sep 6th, 2023
1,013
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdint>
  3. #include <cstdint>
  4.  
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. int K( int n){
  10.     array<uint8_t, 4> digits;
  11.     for (int i=0; i<4;i++){
  12.         digits[i]=n%10;
  13.         n/=10;
  14.     }
  15.     sort(begin(digits),end(digits));
  16.     return 999*(digits[3]-digits[0]) + 90*(digits[2]-digits[1]);
  17. }
  18.  
  19. vector<int> Distance;
  20.  
  21. void fix_distance(int i){
  22.     if (Distance[i]!=-1)
  23.         return; //I did nothing and my job is done
  24.     int Next = K(i);
  25.     fix_distance(Next);
  26.     Distance[i]=Distance[Next]+1;
  27. }
  28.  
  29.  
  30. int main()
  31. {
  32.     Distance = vector<int> (10000,-1);
  33.     Distance [ 6174] =0;
  34.     Distance [ 0] =0;
  35.     for (int i=0; i<size(Distance); i++){
  36.         fix_distance(i);
  37.     };
  38.     cout<<"Number distance next_number\n";
  39.     for (int i=0; i<size(Distance); i++){
  40.         if (K(i)!=0)
  41.             cout<<i<<" "<<Distance[i]<<" "<<K(i)<<'\n';
  42.     };
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement