#include #include int next(int n){ if(n==1) return -1; if((n%2)==0) return (n/2); return ((3*n)+1); } int main(int argc, char* argv[]){ int a, b; while(1){ scanf("%d %d", &a, &b); if(a==0 && b==0) break; int kapacita = 10; int* x = (int*)malloc(kapacita*sizeof(*x)); int prvku = 1; x[0] = a; while(1){ if(prvku == kapacita){ x=(int*)realloc((void*)x, (2*kapacita*sizeof(*x))); kapacita*=2; } int cislo = next(x[(prvku-1)]); if(cislo == -1) break; x[(prvku)] = cislo; prvku++; } int test = b; int i=0, cnt=0, ini=0; while(1){ for(i= 0; i < prvku; i++){ if(test == x[i]){ ini = 1; break; } } if(ini == 1) break; test = next(test); cnt++; } printf("%d needs %d steps, %d needs %d steps, they meet at %d\n", a, i, b, cnt, test); free(x); } return 0; }