#include #include #include using namespace std; vector Alist; vector Blist; int vratPoziciA(int a) { for (int i=0; i mnozA; set mnozB; unsigned long long A,B; cin >> A >> B; while(A!=0 or B!=0) { unsigned long long spolocne=0; int krokyA=0; int krokyB=0; int kroky=0; unsigned long long startA = A; unsigned long long startB = B; while(true) { mnozA.insert(A); mnozB.insert(B); Alist.push_back(A); Blist.push_back(B); if(mnozB.find(A)!=mnozB.end()) {// naslo A v mnozine B spolocne = A; krokyB=kroky; krokyA = vratPoziciB(A); break; } else if(mnozA.find(B)!=mnozA.end()) {// naslo B v mnozine A spolocne = B; krokyA=kroky; krokyB = vratPoziciA(B); break; } if(A%2==0) A=A/2; else A=3*A+1; if(B%2==0) B=B/2; else B=3*B+1; kroky++; } cout<< Alist[0] << " needs " << krokyB << " steps, " << Blist[0] << " needs " << krokyA << " steps, they meet at " << spolocne <> A >> B; } return 0; }