Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdint>
- #include <cstdint>
- #include <algorithm>
- using namespace std;
- int K( int n){
- array<uint8_t, 4> digits;
- for (int i=0; i<4;i++){
- digits[i]=n%10;
- n/=10;
- }
- sort(begin(digits),end(digits));
- return 999*(digits[3]-digits[0]) + 90*(digits[2]-digits[1]);
- }
- vector<int> Distance;
- void fix_distance(int i){
- if (Distance[i]!=-1)
- return; //I did nothing and my job is done
- int Next = K(i);
- fix_distance(Next);
- Distance[i]=Distance[Next]+1;
- }
- int main()
- {
- Distance = vector<int> (10000,-1);
- Distance [ 6174] =0;
- Distance [ 0] =0;
- for (int i=0; i<size(Distance); i++){
- fix_distance(i);
- };
- cout<<"Number distance next_number\n";
- for (int i=0; i<size(Distance); i++){
- if (K(i)!=0)
- cout<<i<<" "<<Distance[i]<<" "<<K(i)<<'\n';
- };
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement