#include <iostream>
using namespace std;
int main() {
int c0;
int steps = 0;
// Leer el número inicial
cout << "Enter a natural number: ";
cin >> c0;
// Validar que el número sea positivo
if (c0 <= 0) {
cout << "Error: The number must be a positive integer." << endl;
return 1;
}
// Aplicar las reglas de Collatz
while (c0 != 1) {
if (c0 % 2 == 0) {
c0 = c0 / 2; // Si es par, dividir por 2
} else {
c0 = 3 * c0 + 1; // Si es impar, multiplicar por 3 y sumar 1
}
cout << c0 << endl; // Mostrar el valor intermedio
steps++; // Incrementar el contador de pasos
}
// Mostrar el número total de pasos
cout << "steps = " << steps << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgYzA7CiAgICBpbnQgc3RlcHMgPSAwOwoKICAgIC8vIExlZXIgZWwgbsO6bWVybyBpbmljaWFsCiAgICBjb3V0IDw8ICJFbnRlciBhIG5hdHVyYWwgbnVtYmVyOiAiOwogICAgY2luID4+IGMwOwoKICAgIC8vIFZhbGlkYXIgcXVlIGVsIG7Dum1lcm8gc2VhIHBvc2l0aXZvCiAgICBpZiAoYzAgPD0gMCkgewogICAgICAgIGNvdXQgPDwgIkVycm9yOiBUaGUgbnVtYmVyIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBBcGxpY2FyIGxhcyByZWdsYXMgZGUgQ29sbGF0egogICAgd2hpbGUgKGMwICE9IDEpIHsKICAgICAgICBpZiAoYzAgJSAyID09IDApIHsKICAgICAgICAgICAgYzAgPSBjMCAvIDI7IC8vIFNpIGVzIHBhciwgZGl2aWRpciBwb3IgMgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGMwID0gMyAqIGMwICsgMTsgLy8gU2kgZXMgaW1wYXIsIG11bHRpcGxpY2FyIHBvciAzIHkgc3VtYXIgMQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGMwIDw8IGVuZGw7IC8vIE1vc3RyYXIgZWwgdmFsb3IgaW50ZXJtZWRpbwogICAgICAgIHN0ZXBzKys7IC8vIEluY3JlbWVudGFyIGVsIGNvbnRhZG9yIGRlIHBhc29zCiAgICB9CgogICAgLy8gTW9zdHJhciBlbCBuw7ptZXJvIHRvdGFsIGRlIHBhc29zCiAgICBjb3V0IDw8ICJzdGVwcyA9ICIgPDwgc3RlcHMgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==