Resumen de la Torre de Hanoi (2)

Vi una solución muy nb Tower of Hanoi en Internet hoy: conteo binario.
  • Por ejemplo: hay 8 placas, numeradas del 0 al 7 de pequeña a grande, correspondientes a los bits de menor a mayor del número binario de 8 bits. Nos sorprenderá encontrar que cada vez que movemos la placa No. 0, el bit más bajo del binario se convertirá en 1 (más 1), y cuando se mueve la placa No. 1, el penúltimo bit se convertirá en 1 ... y así sucesivamente, podemos obtener Si la ejecución binaria corresponde al número de veces que se mueve la placa, el dígito con el primer 1 del dígito inferior corresponde al número de la placa en movimiento actual. Agregue código y preguntas de muestra para ayudar a comprender:

Descripción del problema:
Pregunte qué placa se movió por mes.

Entrada:
2 enteros por línea n (1 ≤ n ≤ 63), m≤ 2 ^ n-1.n = m = 0 salir.63
1
63 2
0 0

Salida: Muestra
el número de placa movida por enésima vez.
1
2

#include<iostream>
using namespace std;

int main()
{
    
    
	long long n,m;
	while(cin>>n>>m&&n&&m)
	{
    
    
		int temp,p=0;
		while(m!=0)
		{
    
    
			temp=m%2;
			m=m/2;
			p++;
			if(temp==1) break;
		}
		cout<<p<<endl;
	}
	return 0;	
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45688536/article/details/105327328
Recomendado
Clasificación