#include #include using namespace std; typedef vector Array; Array aArray; Array bArray; void generate(unsigned &a, Array &array) { array.push_back(a); // sude if (a % 2 == 0) { a /= 2; } // lichy else { a = 3*a +1; } } int main() { unsigned a; unsigned b; while (1) { cin >> a; cin >> b; if (a == 0 && b == 0) break; unsigned aSave = a; unsigned bSave = b; while (a!=1 || b!=1) { if (a != 1) generate(a,aArray); if (b != 1) generate(b,bArray); } aArray.push_back(1); bArray.push_back(1); for (unsigned iA = 0 , aSize = aArray.size() ; iA < aSize ; ++iA) for (unsigned iB = 0 , bSize = bArray.size() ; iB < bSize ; ++iB) if (aArray[iA] == bArray[iB]) { cout << aSave << " needs " << iA << " steps, " << bSave << " needs " << iB << " steps, " << "they meet at " << aArray[iA] << '\n'; iB=bSize; iA=aSize; } aArray.clear(); bArray.clear(); } return 0; }